Vamos atribuir os números de 0 a 94 aos 95 caracteres ASCII imprimíveis :
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
O espaço é 0, !
é 1 e assim ~
sucessivamente até 94. Também atribuiremos 95 à tab ( \t
) e 96 à nova linha ( \n
).
Agora considere a seqüência infinita cujo enésimo caractere é o caractere acima ao qual o enésimo número primo , módulo 97, foi atribuído. Vamos chamar essa string S.
Por exemplo, o primeiro número primo é 2 e 2 mod 97 é 2 e 2 é atribuído a "
, então o primeiro caractere de S é "
. Da mesma forma, o 30º número primo é 113 e 113 mod 97 é 16, e 16 é atribuído a 0
, então o 30º caractere de S é 0
.
Os primeiros 1000 caracteres de S são os seguintes:
"#%'+-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^
O Stack Exchange transforma guias em espaços, então aqui está um PasteBin com as guias intactas.
Desafio
Encontre uma substring de S que seja um programa válido no idioma de sua escolha que emita os primeiros números primos M, um por linha, em ordem , para algum número inteiro positivo M.
Por exemplo, 2
é uma subcadeia de S (ocorre em vários lugares, mas qualquer 2
um serve ) e é um programa CJam válido cuja saída é
2
que é o primeiro M = 1 números primos, um por linha, em ordem.
Da mesma forma, a string 2N3N5
pode ser uma substring de S em algum lugar e 2N3N5
é um programa CJam válido que gera
2
3
5
que é o primeiro M = 3 números primos, um por linha, em ordem.
Pontuação
A finalização com o maior M vence. O desempatador vai para a submissão postada primeiro.
Detalhes
Não deve haver saída adicional além dos números primos em cada linha, exceto por uma nova linha à direita opcional após a última linha. Não há entrada.
A substring pode ter qualquer comprimento, desde que finita.
A substring pode ocorrer em qualquer lugar dentro de S. (E S pode contê-lo em vários locais).
O programa deve ser um programa completo. Você não pode assumir que ele é executado em um ambiente REPL.
O programa deve ser executado e finalizado em uma quantidade finita de tempo, sem erros.
"Nova linha" pode ser interpretada como qualquer representação comum de nova linha necessária ao seu sistema / intérprete / etc. Apenas trate-o como um personagem.
Você deve fornecer o índice de S onde sua substring inicia, bem como o comprimento da substring, se não a própria substring. Você pode não apenas mostrar que a substring deve existir.
Relacionados: Procurando programas em uma enorme placa Boggle