Вызов
Учитывая две цифры 0-9 в качестве входных данных, выведите домино (из набора домино двойной девяти ) с этим количеством точек (точек) на двух гранях. Десять возможных граней выглядят так (разделены трубками):
| | o| o|o o|o o|o o o|o o o|o o o|o o o
| o | | o | | o | | o |o o|o o o
| |o |o |o o|o o|o o o|o o o|o o o|o o o
Или на отдельных строках:
-----
o
-----
o
o
-----
o
o
o
-----
o o
o o
-----
o o
o
o o
-----
o o o
o o o
-----
o o o
o
o o o
-----
o o o
o o
o o o
-----
o o o
o o o
o o o
Форматы ввода
Вы можете принять участие в любом разумном формате, включая, но не ограничиваясь:
- Два отдельных целых числа, строки или одноэлементные массивы;
- Одно целое число от 0 до 99;
- Массив из двух целых чисел;
- Строка из двух цифр.
Выходные форматы
- Две грани могут быть выровнены по горизонтали, разделены трубами так:
o|o o
| o
o |o o
- Или они могут быть выровнены вертикально, разделены дефисами так:
o
o
-----
o o
o
o o
- Вы можете вывести границу вокруг домино, если хотите.
- Вы можете также выбрать вывод списка линий, списка двух граней или их комбинации.
- Вы можете использовать любой непробельный символ для пунктов (я использовал
o
). - Если вы действительно хотите, вы можете использовать
0
для пробелов и1
для пипсов, илиFalse
/True
(или эквивалент вашего языка) при выводе массива. - Вы можете удалить пробел между столбцами; это верный вывод для 7, 7:
ooo|ooo
o | o
ooo|ooo
- Любое лицо может быть повернуто на 90 градусов. Это также допустимый вывод для 7, 7:
o o|o o o
o o o| o
o o|o o o
- Вы можете иметь столько пустых мест в начале / конце, сколько захотите, при условии, что основная часть вывода по-прежнему соответствует другим ограничениям.
- Каждое лицо должно быть 3 линии в высоту, даже если линии пусты. Для 0, 1 вы не могли бы вывести это:
-----
o
Но вы могли бы вывести это:
-----
o
Точно так же, если вы выводили список из двух списков строк, вы могли бы сделать [["", "", ""], ["", " o", ""]]
, но не [[""], [" o "]]
.
счет
Это код-гольф , поэтому выигрывает самый короткий код в байтах на каждом языке.
[2, 1]
я мог бы вывести[[[0,0,1],[0,0,0],[1,0,0]],[[0,0,0],[0,1,0],[0,0,0]]]
?[0,5,21,29,31]
Все важные цифры здесь, мои друзья.Ответы:
Python 2 ,
10197926864 байтаПопробуйте онлайн!
кредиты
источник
0
иFalse
в Python они равны, поэтому все должно быть в порядке).C (gcc) ,
252242269262241235220 байтЯ был на переполнение стека для сокетов в Python, когда это всплыло, сказал, почему нет? Первый код гольф, так что я не совсем уверен, что я полностью следовал правилам (а если нет, и кто-то хочет украсть мое общеизвестное печенье и исправить его, пусть будет так). С 'o' и ''
255 245 272 265 244 238228 байт. заменить +48 на * 79 + 32.Попробуйте онлайн!
Как это работает:
я использую битовое смещение и побитовое отображение, чтобы определить, должна ли точка быть чистой или в пипсах, затем сместить 0 или 1 до правильного значения ASCII. это портит 4 и 5, поэтому они нуждались в некотором исправлении. на самом деле добавлено несколько байтов. был в состоянии удалить несколько байтов, удалив маску и просто используя 1 (doh)
Особая благодарность г-ну Xcoder за 7 меньших байтов за счет удаления лишнего #define
Изменения: удален memset -21 байт. переделать битовую логику на 6, 4, 2, чтобы они зависели от 8 | 4 & 2, 8 | 4, 8 | 4 | 2 соответственно. -6 байт. убрал лишние переводы строк, используя put вместо printf, что также короче. сократил массив до 11, удалив лишнее присваивание. -15 байт. Теперь я думаю, что это лучшее, что я могу сделать.
источник
'\n'
можно заменить на10
. (потому что в C типы данных char также являются целочисленными типами данных) Некоторые из них,char
вероятно, могут быть заменены наint
. (или опустить полностью)Желе , 20 байт
Попробуйте онлайн!
Альтернативная версия, оригинальный вывод,
333231 байтСпасибо @ user202729 за вывод 1 байта!
Попробуйте онлайн!
Как это работает
Во-первых,
“¤o.ƤẸʠṚ’
- целочисленный литерал в биективной базе 250 - устанавливает возвращаемое значение равным 1086123479729183 .Затем
B¬
преобразует возвращаемое значение в двоичное и принимает логическое НЕ каждой цифры, получая массивДалее,
s5ŒB
разбивает этот массив на куски длиной 5 , а затем подпрыгивает каждый кусок, превращая ABCDE в abcdedcba , получаяТеперь
ị@
извлекает j- й и k- й элемент этого массива, где j, k - первый аргумент программы. Обратите внимание, что индексирование основано на 1 и является модульным, поэтому нулевой элемент также является десятым.Наконец,
s€3
разбивает каждый кусок длиной девять на три фрагмента длины три.источник
3
Используется0
для пипсов, а не1
как все остальные.“¤o.ƤẸʠṚ’
должно сработать.Желе , 13 байт
Попробуйте онлайн!
Объединяя идею Денниса об использовании
ŒB
(bounce) в этом ответе и наблюдение Xcali в этом ответе, чтобы получить 13 байтов.Желе , 28 байт
(с красивой печатью)
Только теперь я знаю, что строковый литерал Jelly автоматически завершается ...
Попробуйте онлайн!
источник
⁽½ÑD
приводит к меньшему количеству участников, чем ответ“¤¦¢¬‘
PHP
155, 150 байтОн принимает массив целых чисел в качестве входных данных. Для тестирования:
Выходной формат:
Проверьте это в прямом эфире здесь
Мое решение
Для своего решения я использовал матрицу, состоящую из побитовых чисел (степени 2). Это можно представить так:
И затем массив хранения, состоящий из битовых позиций для пипсов каждого домино, коррелированных с пронумерованным индексом:
Так что просто уточнить:
0
или значение0
будет пустым домино, которое всегда ложно.1
или значение16
будет домино номер один и в матрице, которая находится в центре16
.2
или значение68
будет домино номер два и в матрице, которая находится вверху справа4
и внизу слева64
или4|64
5
или значение341
будет номер пять домино и в матрице, которая1|4|16|64|256
9
или значением511
будет номер девять домино, а в матрице - комбинация всех битов.Как только это будет установлено , что это довольно простой вопрос зацикливания на 9 позиций в матрице, а также создание
$x
в2
к власти в$i
Затем мы делаем побитовый И,
&
как мы перебираем эти места. Так что для примера сакэ будет использовать пример 2 сверху, и я буду использоватьx
вместо этого пробелы для наглядности:68 & 1 ? 0 : 'x'
которая приводит к'x'
68 & 2 ? 0 : 'x'
которая приводит к'x'
68 & 4 ? 0 : 'x'
которая приводит к0
68 & 8 ? 0 : 'x'
которая приводит к'x'
68 & 16 ? 0 : 'x'
которая приводит к'x'
68 & 32 ? 0 : 'x'
которая приводит к'x'
68 & 64 ? 0 : 'x'
которая приводит к0
68 & 128 ? 0 : 'x'
которая приводит к'x'
68 & 256 ? 0 : 'x'
которая приводит к'x'
Когда цикл завершен, мы получаем эту строку
"xx0xxx0xx"
.Затем мы добавляем
"---xx0xxx0xx"
к нему границу (я на самом деле начинаю с границы, но что угодно) .И, наконец, мы chunk_split () на 3 для:
Не стесняйтесь, дайте мне знать, что вы думаете.
источник
**
представленный в PHP 5.6 вместоpow()
php.net/manual/en/language.operators.arithmetic.php^
но это битовый XOR ... LOL$argv
. Служебная функция в PHP обычно составляет 13 байт.Perl 5 ,
107 7670+ 1 (= 70 байт-a
)Perl 5 , 70 байт
Попробуйте онлайн!
Использует 0 для пробелов и 1 для пипсов. Довольно простой метод: обратите внимание, что при увеличении цифры, когда пипс «включен», он никогда не гаснет, за исключением одного в середине. В средней позиции он включен для всех нечетных чисел. Таким образом, для каждой позиции просто проверить, является ли цифра больше последней цифры, для которой она выключена.
||0
Создает выходной сигнал, когда условие ложно. В Perl false это то,undef
что выводит как ноль.источник
JavaScript (ES6),
7978 байтСохранено 1 байт благодаря @ETHproductions
Принимает ввод в синтаксис карри
(a)(b)
и выводит вертикальное ASCII домино.демонстрация
Показать фрагмент кода
Горизонтальная версия,
8079 байтовСохранено 1 байт благодаря @ETHproductions
Принимает входные данные в виде массива из 2 целых чисел и выводит горизонтальное домино ASCII.
демонстрация
Показать фрагмент кода
источник
n>d|0
или(+d?n>d:n)&1
APL (Дьялог) , 25 байт
Попробуйте онлайн!
-2 благодаря нгн .
Формат вывода немного странный: эта функция возвращает массив, содержащий два массива shape-3,3, каждый из которых содержит 0 и 1.
источник
2∘|(3 3⍴⊢,,∘⌽)¨>∘3 5 1 7¨
C (gcc) , 115 байтов
Попробуйте онлайн!
источник
Javascript (ES6), 87 байт
источник
Хаскель - 88 персонажей
Принимает список из двух чисел, обозначающих лица, возвращает список из списка списка bool. Не так коротко, но я нахожу решение интересным.
источник
map
вместоrepeat
иzipWith
:map$(<$>[[(>4),(>5),(>1)],[(>7),odd,(>7)],[(>1),(>5),(>3)]]).map.flip($)
Попробуйте онлайн!Пип ,
32272421 байт-3 байта благодаря @DLosc
Попробуйте онлайн!
Объяснение:
источник
3517
вместо списка[3 5o7]
. ;)> <> , 57 + 3 = 60 байт
Попробуйте онлайн . Выводится как вертикальное домино с 1 с для точек, 0 с для пробелов и 9 с для разделителей следующим образом:
Технически это может быть расширено до 12 введенных значений.
Старая версия:
> <> , 76 + 3 = 79 байт
Попробуйте онлайн . Выводится как вертикальное домино с 1 с для точек и 0 с для пробелов, например:
источник
Древесный уголь ,
46444339 байтПопробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Прочитайте два целых числа и отобразите их в таблице поиска. Затем сопоставьте результат. (Это эффективно фиксирует результат во временном.)
Затем результаты неявно печатаются в отдельных строках, с дополнительной пустой линией между каждой гранью, потому что результаты вложены.
Двигайтесь вверх и проведите разделительную линию между гранями.
Предыдущая 43-байтовая горизонтальная версия:
Попробуйте онлайн! Ссылка на подробную версию кода. Объяснение:
Работать вертикально.
Распечатать разделительную линию.
Положение к началу первого лица.
Прочитайте два целых числа и отобразите их в таблице поиска.
Подготовка к выходу до 9
o
с.Но начинайте новый столбец каждые три
o
с.Преобразуйте младшие 5 битов кода ASCII в двоичный, а затем отразите выходные данные в течение оставшихся 4
o
с.источник
Желе , 16 байт
Попробуйте онлайн!
Использовал стратегию и базовую декомпрессию Нейла для генерации значений; выводит в виде двоичного массива. Принимает список в качестве входных данных.
Объяснение:
источник
APL + WIN,
4947 байтОтредактировано согласно комментарию Адама, спасибо, чтобы работать с нулем начала индекса.
Запрашивает ввод с экрана в виде вектора целых чисел, по одному на каждую грань.
Выход имеет вид:
для входов
7 3
и0 5
Объяснение:
источник
⎕IO←0
чтобы спасти себя1+
?Python 2 , 121 байт
Попробуйте онлайн!
Уменьшено до 121 с использованием лямбды после возвращения и перечитывания правил. Теперь выводит список строк.
Предыдущая версия с красиво отформатированным выводом:
Python 2 ,
156153147141 байтПопробуйте онлайн!
-3 с благодарностью @NieDzejkob
Принимает ввод как 2 целых числа и выводит в вертикальном формате с 0 = пробел и 1 = точка.
источник
Пыть ,
220154 байтаВторая попытка (154 байта)
Объяснение:
Первая попытка (220 байт):
Объяснение:
Попробуйте онлайн!
источник
05AB1E , 34 байта
Попробуйте онлайн!
Это было сложно, потому что у 05AB1E плохое заполнение.
Основное объяснение:
источник
SmileBASIC,
9269 байтПример:
Это то, что происходит, когда ваши правила недостаточно строги.
источник
ЛОЖЬ,
116807870696663615958 байтвсе еще работает над этим ...
источник
чип ,
142135 байтПопробуйте онлайн!
Ввод представляет собой строку цифр. Использует нули в качестве пунктов. Рисует точки для одного числа, читает следующий входной байт. Если нет следующего байта, завершите, иначе нарисуйте разделитель и начните.
Каждый
Z
(илиz
) соответствует одному символу вывода, они расположены для стрельбы в порядке сверху вниз. КапитализируютсяA
,B
,C
иD
соответствуют низким четыре бита ввода (это все , что мы смотрим на, так"34" == "CD" == "st" ...
). В нижнем регистреb
,d
,e
,f
соответствуют различным битам выхода.Может делать домино бесконечной длины тоже; попробуйте дать в
0123456789
качестве ввода.источник
PHP, 116 байт
требует PHP 5.5 или выше. Запустите
-nr
или попробуйте онлайн .источник
C (gcc) ,
150146 байтПопробуйте онлайн!
источник