Ваша задача - написать программу, которая выводит цвет данного квадрата с шахматной доски. Вот как выглядит шахматная доска:
Вы можете видеть, что квадрат a1 темный, а h1 - светлый квадрат. Ваша программа должна выводить dark
или light
, если дан квадрат. Некоторые примеры:
STDIN: b1
STDOUT: light
STDIN: g6
STDOUT: light
STDIN: d4
STDOUT: dark
Правила:
- Вам необходимо предоставить полную программу, которая использует STDIN и использует STDOUT для вывода
dark
илиlight
. - Предположим, что ввод всегда действителен (
[a-h][1-8]
) - Это код-гольф , поэтому выигрывает самое короткое количество байтов!
Табло
var QUESTION_ID=63772,OVERRIDE_USER=8478;function answersUrl(e){return"http://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"http://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>
Ответы:
GS2 ,
1715 байтИсходный код использует кодировку CP437 . Попробуйте онлайн!
верификация
Как это устроено
источник
Python 2,
4138 байт3 байта благодаря Mego для чередования строк
Принимает участие как
"g6"
. Это свет и тьма переплетаются.источник
int(input(),35)
это блестящая часть. Я думал о чередовании строк, но ваш метод ввода сохраняет больше байтов.Гексагония ,
3432 байтаРазвернутый и с аннотированными путями выполнения:
Диаграмма, созданная с помощью потрясающего HexagonyColorer Тимви .
Фиолетовый путь - это начальный путь, который считывает два символа, вычисляет их разность и принимает его по модулю 2. Затем
<
он действует как ветвь, где1
печатаются темно-серый путь (результат )dark
и светло-серый путь (результат0
)light
.Что касается того, как я вычисляю разницу и по модулю, вот диаграмма сетки памяти (со значениями, взятыми для ввода
a1
):Диаграмма, созданная с помощью еще более удивительной Esoteric IDE Тимви (в которой есть визуальный отладчик для Hexagony).
Указатель памяти начинается с края, обозначенного строкой , где мы читаем символ.
}
перемещается к краю с надписью col , где мы читаем цифру."
перемещается к краю с надписью diff, где-
вычисляет разницу между ними.'
перемещается в ячейку без метки, в которую мы помещаем2
, и{=
перемещается в ячейку, помеченную как мод, где мы вычисляем по модулю%
.Это может быть пригодно для игры в гольф на несколько байтов путем повторного использования некоторых из них
;
, но я сомневаюсь, что это может быть сделано в гольф многими, конечно, не до длины стороны 3.источник
CJam, 18 байт
Онлайн демо
рассечение
источник
:-)
:^)
Сед, 37
объяснение
s/[1357aceg]//g
удаляет все нечетные координаты. Полученный шаблонный буфер имеет длину 1 для «светлого» или длину 0 или 2 для «темного»./^.$/
соответствует шаблонам 1 длины,c
передает шаблон на «свет» иq
использует. В противном случае рисунокc
повешен до «темного».источник
q
Является излишним, и вы можете проверить на темноту первого вместо этого/../
, tio.run/##K05N@f@/WD/a0NjUPDE5NT1WXz@dS19PTz85JbEomys5JzM9o@T//...Pyth, 18 байт
Интерпретировать ввод как основную цифру 35, разрезать
lightdark
пополам, распечатать.источник
ShadyAsFuck, 91 байт / BrainFuck, 181 байт
Моя первая настоящая программа BrainFuck, спасибо Мего за помощь и за указание на архив алгоритмов. (Это означает, что я действительно не делал это самостоятельно, но скопировал некоторые существующие алгоритмы. Все еще опыт =)
Это, конечно, перевод из моих ответов мозговой команды:
Разработано с использованием этого интерпретатора / отладчика .
Я украл два фрагмента кода для
divmod
иif/else
от сюда. (Спасибо @Mego!)Теперь у нас есть конфигурация ячеек,
>sum 2
теперь мы выполняем алгоритм divmod:Вывод divmod выглядит следующим образом,
0 d-n%d >n%d n/d
но мы обнулилиd-n%d
и также обнуляем следующую ячейку:Заполните одну ячейку до значения
100
для облегчения вывода:Теперь конфигурация
>cond 0 100
и для примененияif/else
алгоритма нам нужны две временные переменные, поэтому мы выбираем конфигурациюtemp0 >c temp1 100
источник
Python 2, 45 байт
Принимает участие как
"a1"
. Попробуйте онлайнисточник
"ldiagrhgt"[expression::2]
должно работать, сохраняя один или два байтаСерьезно , 19 байтов
Принимает вход как
"a1"
Попробуйте онлайн (вам нужно будет вручную ввести ввод; постоянные ссылки не любят кавычки)
источник
Машинный код Тьюринга, 235 байтов
Используя синтаксис таблицы правил, определенный здесь.
источник
JavaScript (ES6), 45 байт
источник
TI-BASIC, 66 байтов
Проверено на калькуляторе TI-84 +.
Вот более интересный вариант третьей строки, который, к сожалению, точно такого же размера:
Вы могли бы подумать, что TI-BASIC будет приличным в этом вызове, поскольку он включает в себя модуль 2. Это не так; эти решения кажутся кратчайшими.
Мы тратим много байтов, чтобы получить оба символа в строке, но на самом деле стоит тринадцать двухбайтовых строчных букв.
источник
Befunge-93 ,
39373331 байтВся благодарность Линусу, который предложил это 31-байтовое решение:
Проверьте это с помощью этого интерпретатора .
объяснение
В
<
начале отправляет указатель инструкции влево, где он оборачивается вправо. Затем он считывает из входных данных два символа как ASCII, вычитает их и делает по модулю значение 2. Посколькуa
и1
оба являются нечетными (с точки зрения кода ASCII), это работает.v
Перенаправляет указатель инструкции вниз ...... на
_
, который отправляет указатель инструкции влево, если вершина стека равна 0, и вправо в противном случае. Символы «светлый» или «темный», соответственно, помещаются в стек в обратном порядке. Оба пути попадают^
слева, что отправляет указатель инструкции вверх ...... в выходной сегмент.
:
дублирует вершину стека,#
перепрыгивает через,
и на_
, что отправляет указатель инструкции вправо, если вершина стека равна 0, и в противном случае остается влево. Когда стек пуст, вершина стека (после:
) равна 0, поэтому указатель инструкции достигает значения,@
которое останавливает выполнение. В противном случае он попадает в,
, который выводит вершину стека как символ, а затем#
перепрыгивает его через:
и в>
, что снова запускает процесс.источник
rad"v>"k
без пробела?dar k
.» Попробуйте это в связанном онлайн-переводчике.<>:#,_@ v%2-~~\n"^"light"_"krad
, исправить новую строку.Джапт ,
2322 байтаJapt - это сокращенная версия Ja vaScri pt . переводчик
Как это устроено
При использовании новой версии 0.1.3 (выпущенной 22 ноября) это становится на 17 байт короче, чем у всех, кроме GS2:
Или, альтернативно, волшебная формула: (26 байт)
источник
Java,
157127124 байтовисточник
interface i{static void main
так как все в интерфейсе по умолчанию общедоступноTeaScript , 23 байта
К сожалению строки
dark
иlight
не могут быть сжаты.источник
Рубин,
вычеркнуто 4436 байтисточник
puts
с$><<
(без пробела).puts
наp
C, 55 байтов
Попробуйте онлайн
Спасибо DigitalTrauma за множество советов по игре в гольф
источник
(
послеputs
s;main(){puts(strtol(gets(&s),0,19)&1?"light":"dark");}
. Предполагается, что целочисленная ширина достаточно велика, чтобы вместить 3 символа строки. Вы также должны быть в состоянии сделатьmain(s){puts(strtol(gets(&s),0,19)&1?"light":"dark");}
для 54, хотя по какой-то причине get () возвращает мусор,s
если не глобальный, так что это segfaults.BotEngine ,
16514x11 = 154Вот это с различными выделенными сегментами пути:
(Любой не-пробельные символы не выделенные служить в качестве аргументов для
e
иS
instructions- каждого из этих команд используют символ влево ( по отношению к направлению бота движения) в качестве аргумента)источник
𝔼𝕊𝕄𝕚𝕟, 26 символов / 34 байта
Try it here (Firefox only).
источник
C, 49 байтов
источник
gets(&c)%256+c/256
?gets(&c)
. Я обновил свое представление соответственно.Clojure, 63 байта
Я сохраняю 2 достойных байта, заключая в кавычки слова «светлые» и «темные», чтобы Clojure воспринимал их как литерал, а не заключал каждое слово в кавычки. Я также экономлю несколько байтов, используя pr, а не println.
Некоторая информация о цитировании в Clojure
источник
Минколанг 0,12 ,
2824 байтаПопробуй это здесь.
объяснение
источник
C, 46 байтов
Ожидается среда, в которой
int
s хранится в порядке байтов и имеет размер не менее двух байтов.объяснение
c
естьargc
, поэтому изначально он содержит01 00 00 00
.gets
прочитает два символа, скажемa (0x61)
и1 (0x31)
, и сохранит ихc
, что сейчаспредставляющий число 0x3161 или 12641.
По сути, в данной задаче
c = x + 256*y
мы хотим вычислить(x + y) mod 2
и вывести соответствующую строку. Для этого я мог бы написатьc % 255 % 2
, как тогдаТем не менее,
37
также работает:x
находится в диапазоне 49-57 включительно (цифры 1-8), тx % 37 == x - 37
.y
находится в диапазоне 97-104 включительно (строчные ах), тy % 37 == y - 74
.Это означает, что мы можем упростить
и просто переверните строки, чтобы исправить соотношение.
источник
Луч , 127 байт
Объяснение Голубой - считывание символа с входа в луч, сохранение значения луча в хранилище, чтение символа с ввода в луч.
Темно-синий - добавляет магазин к лучу, уменьшая магазин до 0 при увеличении луча
Светло-зеленый - четная нечетная тестовая конструкция. Цикл выйдет влево, если луч четный, или вправо, если нечетный.
Темно-зеленый - выходы темные
Tan - выход света
источник
О ,
2217 байтЭто делает то, что требуется, без каких-либо дополнительных преимуществ.
источник
Лабиринт ,
48464542 байтаСпасибо Sp3000 за сохранение двух байтов.
Попробуйте онлайн!
объяснение
Начало кода - забавный тупик. Помните, что Лабиринт предполагает бесконечное число нулей, когда он требует операндов в нижней части стека. Код начинается с
-
правильного хода, который пытается вычесть два числа, поэтому стек становится:Затем
,
читает первый символ,a
скажите:Параметр
"
no-op, но это также тупик, поэтому указатель инструкций поворачивается и начинает идти влево. Затем`
читает другой персонаж,2
скажите:На этот раз
-
вычитает эти два числа:IP теперь следует за поворотом «коридора».
#
Получает глубину стека, игнорируя скрытые нули, которые удобно случается2
:И
%
вычисляет по модулю:На данный момент IP находится на стыке. Если вершина стека равна нулю, он будет двигаться прямо вперед, где
100.97.114.107.@
печатаетdark
. Но если вершина стека отлична от нуля (в частности,1
), она переместится вправо, где0:::8.5.3.4.116.@
печатаетlight
(обратите внимание, что мы можем опустить ведущий1
, потому что1
в стеке уже есть , и мы можем сэкономить на повторном10
в108
,105
,103
,104
сделав несколько копий ,10
когда мы сначала получить там).источник
Matlab, 51 байт
Я не думаю, что это нуждается в каких-либо объяснениях =)
источник
> <> , 31 байт
Здесь я думаю, что "должен быть лучший способ ..."
источник
Perl,
2927 байтДля этого кода требуется
-p
переключатель, который я посчитал 1 байтом.Попробуйте онлайн на Ideone .
Как это устроено
Благодаря
-p
переключателю Perl читает одну строку ввода и сохраняет ее в$_
././
является регулярным выражением, которое соответствует одному символу. Это имеет два значения:Поскольку совпадение прошло успешно,
/./
возвращается 1 .Пост-матч (второй входной символ) сохраняется в
$'
.$'+ord
добавляет целое число, которое представляет второй входной символ, к коду point (ord
) первого символа неявной переменной$_
.&
принимает побитовое И возвращаемого значения/./
и суммы$'+ord
, возвращая 1 - это сумма, если она нечетная, 0, если она четная.?light:dark
возвращает свет, если предыдущее выражение вернуло 1 и темно противном случае.Наконец,
$_=
присваивает результат$_
, который Perl печатает автоматически, благодаря-p
переключателю.источник