Вызов
Ваша задача - вывести время (через 12 часов) в ascii art.
Все символы, которые будут использоваться, следующие:
___ __ ___ ____ _ _ _____ __ ______
/ _ \ /_ | |__ \ |___ \ | || | | ____| / / |____ |
| | | | | | ) | __) | | || |_ | |__ / /_ / /
| | | | | | / / |__ < |__ _| |___ \ | '_ \ / /
| |_| | | | / /_ ___) | | | ___) | | (_) | / /
\___/ |_| |____| |____/ |_| |____/ \___/ /_/
___ ___
/ _ \ / _ \ _
| (_) | | (_) | __ _ _ __ _ __ _ __ (_)
> _ < \__, | / _` | ' \ | '_ \ ' \ _
| (_) | / / \__,_|_|_|_| | .__/_|_|_| (_)
\___/ /_/ |_|
(Для каждого номера / символа в отдельности, обратитесь к этой сути ).
Вы получите входные данные в массиве вида:
[hours, minutes, 'am/pm']
, Например,[4, 57, 'am']
с одинарными кавычками используется только для am / pm- или
"hours-minutes-am/pm"
. Например,"4-56-am"
- или
[hours, 'minutes', 'am/pm']
для языков, которые не могут обрабатывать начальные нули на числах. Например,[4, '07', 'am']
Вы можете использовать любой метод ввода.
Вывод будет в форме 1 2 : 5 9 am
, где есть один начальный пробел, два пробела между каждым числом (в сущности, у каждого числа уже есть один пробел с каждой стороны), один пробел между: (двоеточие) и соседними числами, и один пробел между последним номером иam/pm
, с дополнительным начальным и / или завершающим переводом строки. Все пробелы находятся между самой правой точкой символа слева и самой левой точкой символа справа.
Неявный вывод разрешен.
Побеждает младший размер байта.
am/pm
Должны быть выровнены таким образом, что нижняя часть p
дюйма pm
совмещена с нижней части остальной части производства, то есть, undercore , обозначающая вершинуam/pm
начинается на третьей линии вниз (не считая ведущего перевода строки).
Двоеточие должно быть выровнено так, чтобы его первый символ (подчеркивание) начинался со второй строки вниз (не считая начального перевода строки).
Для minutes < 10
, выведите минуты с лидирующей 0
(вы должны получить это во входных данных). Например, [8, 04, 'pm']
-> 8 : 0 4 pm
.
Вы не должны извлекать данные для номеров из библиотеки или внешнего ресурса. Все данные должны содержаться в программе.
Например, для ввода [12, 47, 'am']
, вывод будет выглядеть следующим образом:
__ ___ _ _ ______
/_ | |__ \ _ | || | |____ |
| | ) | (_) | || |_ / / __ _ _ __
| | / / _ |__ _| / / / _` | ' \
| | / /_ (_) | | / / \__,_|_|_|_|
|_| |____| |_| /_/
(Если вы видите какие-либо крайние случаи, с которыми вы не можете решить, что делать, пожалуйста, напишите в комментариях, и я добавлю их в примеры).
Ответы:
Perl,
592579540522510 байтПод сектором!
Эта программа ожидает время во втором формате ( "12-34-am" ) в качестве аргумента командной строки.
комментарии:
Обратите внимание, что из-за проблем с кодировкой символов, когда вы вставляете вышеуказанный код в файл, вывод может быть несколько искажен. Итак, вот версия для гольфа, кодированная Base-64. Скопируйте его и вставьте в
base64 -d > 510.pl
:Вот шрифт, который я использую. Я поместил глифы на расстоянии 12 символов (размер am / pm) для легкой индексации.
Этот шрифт составляет 592 байта.
Предыдущий подход использовал несколько вариантов сжатия RLE, чтобы уменьшить его до 353 байтов, за счет кода декомпрессии 78 байтов.
Кодирование Хаффмана сжимает шрифт до 221 байта за счет 154 байтов для алгоритма декомпрессии.
источник
Bash + утилиты GNU + figlet , 134
Не уверен, разрешен ли figlet или нет, но, похоже, он предоставляет правильные шрифты -
big
для цифр иsmall
для:
и{a,p}m
:Остальное просто получает правильную информацию
date
и перетасовывает форматирование, чтобы оно выглядело правильно:Figlet может быть установлен на Ubuntu с
sudo apt-get install figlet
.источник
C ++, 938 байт
Пересмотренная версия с некоторым базовым сжатием входных данных: протестируйте здесь
источник
Haskell,
932699 байтУуу, под 700 байт !!
Немного негольфированный
Как это устроено
(Это в основном то, как работает программа ungolfed)
clock
берет кортеж времени и возвращает строку.m
текущая минута с0
добавлением ведущего, если оно есть<10
.hm
это часы и минуты, объединенные с:
. Последнее, что он делает, это транспонирует вывод.Довольно просто здесь.
digit
это функция, которая отображает символы в местоположения в сохраненной строке.Это волшебная хранимая строка.
Единственное реальное изменение между программами для игры в гольф и без игры в гольф состоит в том, что программа для игры в гольф добавляет некоторое сжатие струн, заменяя некоторые общие шаблоны символов
!@$
. Исходная строка данных была667
байтами, после сжатия замены она уменьшается до390
байтовисточник
JavaScript (ES6),
994985 байтУжасная попытка с необработанными данными, не сжатыми вообще, и очень липкий метод для вывода.
Но, эй ... это всего лишь мой второй ответ на Codegolf!
Старая отправка (994 байта) :
Разделите на строки, чтобы было легче читать.
В принципе:
источник
Питон 3,
10851072 байтаGolfed
Ungolfed
источник