Использование 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 выигрывает; то есть тот, который поднимается вверх по целочисленной лестнице.
В случае ничьей побеждает ответ, который использовал наименьшее количество подстановочных байтов.
В случае, если еще есть ничья, победит ответ, который использовал наименьшее количество накопленных символов.
Если есть еще связь, выигрывает более ранний ответ.
источник
4
допустимый фрагмент, который возвращает 4, в более старых версиях Perl, у которых нет REPL?)07
же, как7
?-
ниn
...Ответы:
CJam , 25 фрагментов, 12 подстановочных знаков, 64 байта
Попробуйте онлайн!
Wildcards:
Я чувствую, что я должен опубликовать быстро, прежде чем Деннис перехитрил меня.
источник
CJam , 23 фрагмента, 11 символов подстановки, 45 байтов
Попробуйте онлайн! | счетчик подстановочных знаков (игнорировать символы новой строки)
источник
JavaScript, 10 цифр, 5 символов подстановки
Остальные персонажи:
!!#$$%&())))*...:=@@@HILOQQQTTZ\^```eefmpy{|||~~~~~~~~~
Используется 5/5 бонусных символов:
37680
Программы:
1
3
4
4|!``
6
7
8
9
0xA
Я надеялся, что одна из строк, которую я смог бы использовать,
\xAB
будет числом, но, к сожалению, ни одна из комбинаций, которые я пробовал, не дала бы никакой. Символ^
(XOR) также было бы интересно использовать, но в настоящее время я не вижу возможности использовать его для получения достаточно большого числа.Если вы видите другую возможную комбинацию, дайте мне знать в комментариях.
Редактировать: Добавлено # 10 благодаря Арно
источник
10. 0xA
(0
будучи новым подстановочным знаком для достижения 10)(Q=!``)|Q
за 1, чтобы получить дополнительный1
где-нибудь. Не уверен, что это поможет, хотяPyth, 12 фрагментов, 20 байтов (6 символов подстановки)
Найдите первое число, где root (n, n) истинно, начиная с 1. Выходные данные: 1
Двойной нет
{}
. Выход: 2Подстановочный знак № 1. Выход: 3
Выход: 4.
Подстановочный знак № 2. Выход: 5
Подстановочный знак № 3. Выход: 6
Подстановочный знак № 4. Выход: 7
Подстановочный знак № 5. Выход: 8
Выход: 9
Преинициализированная переменная. Выход: 10
Десять плюс не ноль. Выход: 11
Подстановочный знак № 6 (
2
). Выход: 12источник
Октава, 6 цифр, 3 символа подстановки
Я до сих пор
1
,9
и*
ушел, но я не знаю , если это поможет мне много. Я посмотрю, что я могу сделать с ними :)Нелегко набрать много номеров, если не использовать Esolang. Я надеюсь, что смогу получить еще один или два, но я думаю, что это будет трудно.
источник
Напористый , 10 номеров (4 подстановочных знака)
Все это фрагменты, которые оставляют результат в стеке. Вы можете проверить это в онлайн-переводчике , добавив
#
к каждому фрагменту (чтобы напечатать номер)Этот ответ еще не закончен - хотя вряд ли я добьюсь большего.
источник
05AB1E, 12 цифр, 6 символов подстановки
источник
Гексагония , 6 цифр, 3 символа подстановки, 23 байта
Попробуйте онлайн!
Вся шестая программа состоит из подстановочных знаков.
Единственный действительно интересный
3
. Хотя я мог бы сделать это как4(!@
, это оставило бы меня без,4
чтобы генерировать5
легко, поэтому я пошел вместо этого:Ввиду того
|
, что)
первая строка запускается дважды, до того, как IP переходит в правый угол.$
пропускает@
, а затем\
перенаправляет IP через)
третий раз. IP переносится в левый нижний угол,!
печатает3
и@
завершает программу.Я не думаю, что возможно более 6 фрагментов, потому что есть только 5 команд печати (
!!!!!
) и 5 команд, которые можно использовать для завершения программы (@@@%:
). Итак, после пятого фрагмента нам понадобится как минимум два символа подстановки на каждый фрагмент. Следовательно, даже если бы мне удалось получить6
без использования подстановочного знака для него, не было бы достаточно подстановочных знаков, чтобы перейти к фрагменту семь.источник
JavaScript, 8 цифр, 4 символа подстановки
Я мог бы повторить попытку позже - я как бы трачу персонажей на 2 и 6, когда вы приступаете к этому.
источник
Befunge-98, 4 фрагмента, 18 байтов, 2 символа подстановки
Осталось символов:
!!!$$%&())))*=ILOQQQTTZ\^`````````eefmpxy{||||~~~~~~~~~
Я сомневаюсь, что больше возможно, так как каждая дополнительная программа потребует формы вывода, и все
.,
уже израсходованы. Если я смогу найти способ сделать 3 и 5 без подстановочного знака, то это возможно.Последняя программа в конечном итоге завершится из-за заполнения стека.
A
иH
без загруженных отпечатков пальцев будет отражаться, и программа будет продолжать нажимать 9.источник
%
хотя.00%
действителен в Befunge-98 и приводит к 0 (или запрашивает у пользователя результат в Befunge-93.{
может измениться, если ей не хватает памяти; ничего не сказано о нормальном проталкивании, и все интерпретаторы, по-видимому, терпят неудачу в OOM, но ясно, что в спецификации языка рассматриваются ограничения памятиp
персонажа, но это потребует некоторой работы. Вы могли бы сделать,e%9
чтобы получить 5, но вам нужно было бы как распечатать его, так и завершить программу, так что я сомневаюсь в этомSmileBASIC, 12 фрагментов, 5 символов подстановки, 31 байт
Я мог бы также использовать переменную вместо
.
(переменные начинаются с 0) и строковую переменную (например,Q$
) вместо@Q
Используемые символы:
!!!#&*+...1449@AHILQQTem||
Подстановочные знаки используются:
67813
неиспользуемые символы:
!!$$%()))):=@@OQTZ\\^`````````efpxy{||~~~~~~~~~
источник