Использование 74 символов из строки времени 2016 года
H@~*^)$.`~+1A|Q)p~`\Z!IQ~e:O.~@``#|9@)Tf\eT`=(!``|`~!y!`) Q~$x.4|m4~~&!L{%
написать N фрагментов кода на одном языке, где:
- 1-й фрагмент кода
1
. - 2-й фрагмент кода
2
. - 3-й фрагмент кода
3
. - ... так далее. ...
- Вывод N-го фрагмента
N
(число, а не буквенная буква).
«Фрагмент кода» определяется как любой из них:
- Полная программа без обязательного ввода, которая обычно выводит число .
- Функция без обязательных аргументов, которая обычно выводит / возвращает число .
- РЕПЛ выражение, значение которого числа.
(Вы можете смешивать и сочетать эти три варианта в своих N фрагментах.)
Символы, которые вам разрешено использовать в объединенном наборе из N фрагментов, - это точно 74 символа временной капсулы плюс floor(N/2)
дополнительные байты «подстановочных знаков», которые вы можете использовать где угодно.
Например, временная капсула содержит три @
единицы, поэтому во всех ваших N фрагментах может присутствовать только три @
, если вы не решите использовать некоторые из своих floor(N/2)
подстановочных байтов для дополнительных @
.
Таким образом, не считая подстановочных знаков, объединенный набор символов в ваших N фрагментах должен быть подмножеством 74 символов временной капсулы. Их общая длина не может превышать 74. Вы не можете повторно использовать символы временной капсулы или подстановочные байты между фрагментами.
Заметки
Других ограничений на длину фрагмента или на количество подстановочных знаков, которые можно использовать на фрагмент, нет.
Вы должны записать все фрагменты от 1 до N. Это не от 0 до N-1, не от k до N + k-1.
Фрагменты должны быть индивидуальными, а не один фрагмент, который выводит список
1, 2, 3, ..., N
.Выходные данные могут быть плавающими, как
3.0
вместо,3
и вы можете использовать основание, отличное от десятичного, если это естественная база вашего языка . Вы должны использовать одну и ту же базу для всех фрагментов.Подстановочные знаки считаются байтами в кодировке вашего языка . Вероятно, это будет ASCII, но, например, если
∞
в вашей кодировке считается один байт, вы можете использовать его как один подстановочный байт.Вы можете использовать подстановочные байты для многобайтовых символов. Например
∞
, обычно это три байта, так что вы можете использовать его во фрагменте, но это будет стоить триfloor(N/2)
байта с подстановочными знаками.Новые строки, такие как,
\r\n
можно считать одним байтом.
пример
В Python N = 4 возможно только при использовании REPL. Есть floor(4/2) = 2
подстановочные знаки.
1
из капсулы времени это выражение, которое уклоняется от1
.2
состоит из одного шаблона, а именно2
. Пороки к2
.3
также состоит из одного подстановочного знака. Пороки к3
. Нет больше подстановочных знаков.4
к счастью в капсуле времени, и это уклоняется от4
.
Эти фрагменты короткие и тривиальные. Реальный ответ, вероятно, будет гораздо более сложным.
(Пять и более в Python, безусловно, возможны, но я оставлю это профессионалам.)
счет
Ответ с наибольшим N выигрывает; то есть тот, который поднимается вверх по целочисленной лестнице.
В случае ничьей побеждает ответ, который использовал наименьшее количество подстановочных байтов.
В случае, если еще есть ничья, победит ответ, который использовал наименьшее количество накопленных символов.
Если есть еще связь, выигрывает более ранний ответ.
07
же, как 7
?
-
ни n
...
4
допустимый фрагмент, который возвращает 4, в более старых версиях Perl, у которых нет REPL?)