Это довольно простой вызов, но (я надеюсь) веселый.
задача
Если прямо сейчас либо месяц равен, 4
а день равен 20
, то час (на 12-часовых часах) равен 4
и минуте 20
, или минуте 4
и секунде 20
, выведите это ascii art:
.
.:.
:|:
.:|:.
::|::
:. ::|:: .:
:|:. .::|::. .:|:
::|:. :::|::: .:|:;
`::|:. :::|::: .:|::'
::|::. :::|::: .::|:;
`::|::. :::|::: .::|::'
:::|::. :::|::: .::|::;
`:::|::. :::|::: .::|::;'
`::. `:::|::. :::|::: .::|::;' .:;'
`:::.. `;::|::. :::|::: .::|::: ::::;
`:::::. ':|::. :::|::: .::|:' ,::::;'
`:::::. ':|:::::|:::::|:' :::::;'
`:::::.:::::|::::|::::|::::.,:::;'
':::::::::|:::|:::|:::::::;:'
':::::::|::|::|:::::::''
`::::::::::;'
.:;'' ::: ``::.
:':':
;
Вы можете иметь конечные пробелы.
В противном случае выведите количество минут и секунд, оставшихся до следующего такого случая, в формате: %d minutes and %d seconds left until your next hit.
с минимальным временем.
Это код-гольф , поэтому выигрывает самый короткий код в байтах !
PS Если этот вызов слишком не подходит для этого сайта, скажите мне, и я его поменяю.
code-golf
ascii-art
kolmogorov-complexity
date
Maltysen
источник
источник
Ответы:
Python 2, 371 байт
Этот источник содержит непечатаемые байты, поэтому он представлен в виде hexdump, который можно декодировать с помощью
xxd -r
.Читаемая часть:
источник
JavaScript (ES6), 537 байт
Использует кодировку CP-1252.
Примечание. Все нечитаемые файлы в этом посте экранированы,
\u00xx
поэтому система Stack Exchange не удаляет их автоматически. Они должны иметь размер в один байт.объяснение
Использует схему кодирования длин серий вместе с упаковкой каждого символа в 4 бита. Основная логика кода - 174 байта, а листовая строка (включая декомпрессию) - 364 байта. Дополнительные подробности о методе сжатия приведены ниже.
Алгоритмы сжатия
Без сжатия, 911 байт
Это листовая строка без сжатия вообще.
Длина кодирования, 542 байта
Поскольку существует много последовательных повторяющихся символов, кодирование по длине прогона значительно улучшает количество байтов.
Каждый символ, повторенный 3 или более раз, заменяется символом, за которым следует десятичное число
amount - 3
. Закодированная строка генерируется с этим кодом:4-битная упаковка + RLE, 364 байта
В исходной строке 9 различных символов, что означает 4 - минимальное количество битов для представления каждого. Удобно, что это позволяет вписывать ровно два символьных представления в один байт, позволяя использовать простой (и удобный для гольфа) алгоритм декомпрессии. Кроме того, осталось 7 символов, что позволяет использовать кодировку длины цикла base-7 перед упаковкой. Размещение каждого 4-битного индекса в верхнем и нижнем полубайтах каждого сжатого символа означает, что на байт сохраняются 2 символа, поскольку кодировка CP-1252 кодирует каждый символ в кодовой точке 256 как один байт.
Следующий код используется для кодирования и упаковки длин серий:
Кодирование Хаффмана (возможное будущее улучшение)
Некоторые символы встречаются гораздо чаще, чем другие, поэтому кодирование Хаффмана (целые числа переменной длины, представляющие каждый символ) может сохранить еще несколько байтов. Однако это привнесет намного большую сложность в алгоритм распаковки, так что, помимо того, что он требует гораздо больше работы, его распаковка может стоить больше байтов, чем это сохраняется в закодированной строке.
источник
Javascript ES6, 905 байт
Вот так .. 12-часовые часы убили мое иначе короткое ( ахум ) решение.
905 байт для печати 898 символов ascii art yay
Код без правил
Примечание. Код без ключа не будет выполнен
Попробуй это!
В следующем фрагменте кода вы можете установить дату для тестирования искусства ascii
источник
15:16:20
будет совпадение на вашем регулярном выражении и случайно отобразить волшебную строку?()
это необходимо дляdate
конструктора:c=new d(), ...
может стать простоc=new d, ...