Давайте присвоим цифры от 0 до 94 95 печатным символам ASCII :
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Пробел равен 0, !
равен 1 и т. Д. ~
, Пока не будет 94. Мы также назначим 95 для tab ( \t
) и 96 для newline ( \n
).
Теперь рассмотрим бесконечную строку, чей N-й символ - это символ выше, которому назначено N-е простое число по модулю 97. Мы назовем эту строку S.
Например, первое простое число равно 2, а 2 mod 97 равно 2, и 2 назначено "
, поэтому первый символ S равен "
. Точно так же 30-е простое число равно 113, а 113 mod 97 равно 16, и 16 назначено 0
, так что 30-й символ S равен 0
.
Первые 1000 символов S следующие:
"#%'+-137=?EIKOU[]cgiosy $&*,0>BHJTV\bflrt~
#%1=ACGMOY_ekmswy"046:HNXZ^dlrx|!)-5?AKMSW]eiko{"&.28DFX^hntv|%+139?CEQ[]agmo{ $,6>HPV\`hnrz~+5ACMOSU_mqsw$(*.BFNX`djp~!'-5;GKQS]_eoq{}"48:>DJRX^tv
'17=EQU[aciu 026<>DHJNZ\b#)/7ISaegkqy} $0:<@BFLXdlx~!'/3;?MQWY]ceku(.24LPR\hjt|!'-?EIKWamu$28<>BDNZ`fxz)+AGOUY[_gmwy"0:@LNRT^jl|~#')3;Meiow&(,4DFJRX^bnp%+-37=KQUW]agsy ,06BJPTn
)15;=CYegw ".<FHLTZ`dfjpx|~#-/9AES]ikquw&48>FLPbjtz
'1=KOU[]y{$,0>BJV\hlr%/1A[_amsw"(04<RTXZf!#)/59?AMQ]_ik{},2FV^bdhj
'39CEIOQWacoy{$28<BJPVfrtx%+/7AIOUkqs}*.4FHR`dfp~!);?EGKQS_cw,8:>DJLRhjp
%139EUW[aosu&>HNPZ\fhrxz#%/5=[egqy (:@LXZlrv|!35?MSWY]uw"(8@FL^nptz|!'17COacim &>BDHNP\`n+5;GU[eqsw}$*46:HNTX^`jl|'/AEKWY_ek&,:>FPXdvz|
7CIK[agu ,0NTZ`hnrt
%)+1GMOSegkwy "<BHLT^~-/59;?AKY_cku{.24:X\dntz!'37=?EIOQ[]ms&*6D`fz~/7=AGU[akmw"*46@HT^vx|#)-5GQW]_eo{}&,28@FPVX^djt|39OQcgoy6>PTV`fhnr#+7IY_ams} (*0:HLdfvx!#-AEGKScioq},48>\^hjptz
'-1=CKW[iu 6<HNPfn
)/=ACIS[aek(6@BNXZjl~5GM]ouw(,24>FPV\dhnpz|'+179EIWims&*28<DHV\`nz~
=AY_eq}*046:LR^
Stack Exchange превращает вкладки в пробелы, так что вот PasteBin с нетронутыми вкладками.
Вызов
Найдите подстроку S, которая является допустимой программой на выбранном вами языке и которая выводит первые M простых чисел, по одному в строке , для некоторого положительного целого числа M.
Например, 2
является подстрокой S (она встречается в нескольких местах, но в любом случае подойдет) и 2
является допустимой программой CJam, чей вывод
2
первые M = 1 простых чисел, по одному в строке, по порядку.
Точно так же строка 2N3N5
может быть где-то подстрокой S и 2N3N5
является допустимой программой CJam, которая выводит
2
3
5
это первые M = 3 простых числа, по одному в строке, по порядку.
счет
Представление с наибольшим М выигрывает. Разрыв связи переходит к представлению, размещенному первым.
подробности
Не должно быть никакого дополнительного вывода кроме одиночных простых чисел в каждой строке, за исключением необязательного завершающего символа новой строки после последней строки. Там нет ввода.
Подстрока может быть любой длины, если она конечна.
Подстрока может встречаться где угодно в пределах S. (И S может содержать ее в нескольких местах.)
Программа должна быть полноценной программой. Вы не можете предполагать, что он работает в среде REPL.
Программа должна запускаться и завершаться за конечное время без ошибок.
«Новая строка» может интерпретироваться как любое общее представление новой строки, необходимое для вашей системы / интерпретатора / и т. Д. Просто относитесь к этому как к одному персонажу.
Вы должны указать индекс S, с которого начинается ваша подстрока, а также длину подстроки, если не сама подстрока. Вы можете не только показать, что подстрока должна существовать.
Связанный: Поиск программ на огромной доске Boggle