Напишите самую короткую программу, которая будет принимать строку чисел (длиной не менее 20) в качестве входных данных и отображать выходные данные с использованием стандартных чисел в стиле цифровых часов. Например, для ввода 81 решение с выводом ascii даст:
_
|_| |
|_| |
Графический вывод также приемлем, если это помогает.
Ответы:
APL (Дьялог) (45)
Строка,
ા8धगɯેࣃଏ૽
- это символы Юникода2750 56 2343 2327 623 2759 2777 2243 2831 2813
(однако вы можете просто скопировать и вставить ее). Они кодируют цифры. Программа читает строку с клавиатуры.Объяснение:
1+⍎¨⍞
: прочитать строку с клавиатуры, проанализировать каждый символ как цифру, а затем добавить 1 к каждому числу (массивы APL по умолчанию основаны на 1).⎕UCS'ા8धगɯેࣃଏ૽'[
...]
: выберите символы, принадлежащие цифрам введенных вами цифр, и найдите значения Unicode.{
...}¨
: для каждого из этих значений выполните:1+⍵⊤⍨9⍴3
: получить первые 9 цифр base-3 из значения, выраженного в base-3, и добавить 1 (потому что массивы основаны на 1).' _|'[
...]
: выберите пробел, горизонтальную или вертикальную линию в зависимости от этих цифр3 3⍴
: формат 3 на 3.источник
Funciton
Не совсем подходящий язык для игры в гольф ... но, тем не менее, я старался сохранить размер кода как можно меньшим - совсем другая задача, чем в «обычных» языках. Это 1555 символов или 3110 байт (если кодируется как UTF-16; UTF-8 больше).
Вот скриншот запущенной программы. Это действительно работает :)
Так как в StackExchange это выглядит ужасно из-за дополнительного межстрочного интервала, попробуйте запустить следующий код в консоли JavaScript вашего браузера, чтобы это исправить:
$('pre').css('line-height',1)
Вероятно, он мог бы быть меньше, если бы я не допустил ошибку, из-за которой вывод был обратно вперед; Я исправил это, добавив дополнительную функцию для обратного ввода. В противном случае мне, вероятно, пришлось бы переписать все это.
Я также сделал еще одну ошибку (подкачки операндов в двух вызовов
‼
) , которые сделали необходимым объявить дополнительные‡
функции, но это один настолько мал , что помещается внутри основной функции и , таким образом , не добавляет никаких символов!источник
wxpython, много символов
Тест
ps: несерьезная запись, но похоже, что графический вывод также приемлем, поэтому я просто попробовал :-)
источник
Golfscript - 66 символов
xxd
: (использовать,xxd -r
чтобы вернуться)Это следует за большинством других ответов в том, что между числами нет пробелов, а конечные пробелы сохраняются. Пробел между числами может быть легко добавлен
1+
ранее{"_ |"=}%
. Упаковано в базовое число 3, а затем в качестве базового 243 в строку.источник
J,
90,7868 символов[ обновление: с использованием кодировки Unicode (1 байт):
работает как прежде:]
Ключ находится в кодировании цифр как целых чисел с базой 3. Ноль, например:
или
' _ | ||_|'
, который становится 010202212 3 = 2750.источник
http://codegolf.stackexchange.com/q/1000
)Mathematica
205 209 198179использование
источник
JavaScript (145)
148145Поскольку JavaScript на самом деле не имеет стандартного ввода / вывода, он написан как функция, которая принимает строку и возвращает вывод в виде строки.
Разнесены:
Вот как это работает:
Первые три бита для первого ряда и т. Д.
В каждой группе из трех битов первый указывает, является ли первый символ
|
пробелом, второй -_
пробелом, а третий снова -|
пробелом.Эти три бита извлекаются в качестве
c&1
,c&2
иc&4
, которые затем используются в качестве индексов строкиb
.На каждой итерации указывается
i%L
«x-координата», т. Е. Цифра на входеn
На каждой итерации
i/L
есть «y-координата», то есть строка, но нам нужно|0
сделать ее целойНаконец, пробелы между цифрами и символами новой строки между строками также извлекаются путем индексации
b
, повторного использования символа пробела и неиспользуемой позиции 3 в этой строке! :)источник
Руби, 142
ожидает ввода в переменную
x
. Примеры:источник
Golfscript - 97 символов
источник
Windows PowerShell, 127
Поскольку строки содержат некоторые неприятные для записи символы, для вашего удобства hexdump:
источник
gForth,
186175 символовНовая версия:
Это действительно мешает выйти (+3 символа), а также :). Вот более читаемая версия, она выполняет некоторую упаковку битов, чтобы уменьшить размер LUT на 1/3, но полученный код является более сложным, так что это не большая экономия:
Старая версия:
Это оставляет стек неуравновешенным и не беспокоит выход из интерпретатора. Вот более понятная и понятная версия
источник
C # 369 символов
Я мог бы легко вырезать несколько символов. Дело было в том, чтобы больше злоупотреблять LINQ :)
Больше пробельной версии:
источник
using
s (409). Тогда есть некоторый ненужный пробел, который можно удалить (402). Задача утверждает, что пробел между цифрами должен быть опущен (399).g
используется только один раз, поэтому вы можете сохранить 7 символов, вставив его.b
также используется только один раз, так что вы можете включить его тоже. Кроме того, вы можете сохранить много символов, если вы измените массив целых чисел"{H=mNgwI\x7fo"
, или даже короче, если вы переключитесь\x7f
на фактический символ # 127 (который не печатается, но допустим). По->>
прежнему будет работать, потому что есть неявное преобразование изchar
вint
..ToCharArray()
и то.ToArray()
и другое является избыточным, вы можете просто удалить их :)Решение Java:
585570 символовЯ не думаю, что я буду пытаться больше играть в гольф на Яве ...
источник
Python,
218180176b=map(int,raw_input());a=map(int,bin(914290166014670372457936330)[2:]);c=' |_';p=lambda k:''.join(c[a[9*n+k]]+c[2*a[9*n+1+k]]+c[a[9*n+2+k]]for n in b)+'\n';print p(6)+p(0)+p(3)
С переносами строк:
источник
Баш, 11 знаков
Да, я знаю, я обманываю.
Вам нужно установить туалет.
источник
figlet
также будет работать.Ява, 2095
ОБРАЗЕЦ I / O
источник
D: 295 символов
Более разборчиво:
источник
Окамль, 268
Читаемая версия
источник
Perl (
182180)читает из STDIN.
источник
Ghostscript
(270)(248)(214)Изменить: больше замен. Удален пробел между цифрами.
Изменить: еще больше замен. Основной цикл теперь выглядит как то, что он делает!
Использует функцию обработки аргументов ghostscript: вызвать с
gs -dNODISPLAY -- digit.ps 012 345 6789
.источник
Delphi || 453 (568 с форматом)
Даже не достаточно близко, чтобы выиграть, но было весело сделать ^. ^
С форматом
конец.
источник
PHP,
140136133131129128 байтЯ мог бы сэкономить еще
57 с расширенным ascii: по одному для каждого"| _"
и перевод строки, три для~"z/]{4lno~|"
(побитовое отрицание превратило бы все в расширенные символы ascii = без специальных символов, и PHP там не нужны кавычки), два для-1
(это только там держать карту в стандартной ascii). Но для удобочитаемости и совместимости я остаюсь со стандартным ascii.растровое изображение
_
,|_|
,|_|
как биты-6-
,024
,135
(номер бита и 2 равно 0 для вертикальных светодиодов)[123,48,94,124,53,109,111,112,127,125]
"z/]{4lno~|"
~"z/]{4lno~|"
(разрешает троичное сокращение в выборе символов)шаблон
7
для пространств ->767
,024
,135
701
,623
,745
(делает$p=0
устаревшими)547326107
(читать карту справа налево; допускает арифметическое зацикливание)5473261070
(позволяет объединить сдвиг с тестом в заголовке цикла)753754680
(на два байта короче: одна цифра и префикс)сломать
источник
ord(~"z/]{4lno~|v.J=NF"[hexdec($c)])-1
Java 8, 280 байт
Объяснение:
Попробуй это здесь.
Как функция это будет 218 байтов вместо этого.
источник
Питон, 227 символов
Просто и понятно.
источник
Perl, 145 символов
Ungolfed:
источник
Python 3.4.3 -
1514858 байтИскушение решить это было слишком велико, чтобы не зарегистрироваться и не ответить = P
Я немного новичок в Python, поэтому я отформатировал свою программу красиво и аккуратно (или, по крайней мере, так). Улучшения приветствуются!
Редактировать: сокращенные имена переменных, используемые; чтобы сократить только один пробел в конце выходных чисел, все переменные определены одновременно.
Новые строки - 2 байта (CRLF), и я использовал табуляцию вместо 4 пробелов.
источник
SmileBASIC, 216 байт
Использование графики вместо текста, потому что это, вероятно, короче.
Объяснение:
источник
C ++
230229225223218207204198 байтЧитает из стандартного ввода и вывода на стандартный вывод.
Объяснение:
источник
Powershell, 114 байт
Тестовый скрипт:
Выход:
Суть:
Каждый стандартный номер стиля цифровых часов содержит 3 строки. Причем первая строка содержит только 2 варианта. Всего 6 вариантов. Следовательно, 7 битов достаточно для кодирования каждой цифры.
Таким образом, строка
f-SR5Z^mvr
кодирует все сегменты для всех стандартных чисел в стиле цифровых часов.Примечание. Порядок
line str
был специально выбран таким образом, чтобы все коды были в интервале32..126
.источник