Asignemos los números del 0 al 94 a los 95 caracteres ASCII imprimibles :
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
El espacio es 0, !
es 1, y así hasta que ~
sea 94. También asignaremos 95 a tab ( \t
) y 96 a nueva línea ( \n
).
Ahora considere la cadena infinita cuyo enésimo carácter es el carácter anterior al que se ha asignado el enésimo número primo , módulo 97. Llamaremos a esta cadena S.
Por ejemplo, el primer número primo es 2, y 2 mod 97 es 2, y 2 está asignado a "
, por lo que el primer carácter de S es "
. Del mismo modo, el número 30 primo es 113, y 113 mod 97 es 16, y se asigna 16 0
, por lo que el carácter 30 de S es 0
.
Los primeros 1000 caracteres de S son los siguientes:
"#%'+-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 convierte las pestañas en espacios, así que aquí hay un PasteBin con las pestañas intactas.
Desafío
Encuentre una subcadena de S que sea un programa válido en su idioma de elección que genere los primeros números primos M, uno por línea, en orden , para algún número entero positivo M.
Por ejemplo, 2
es una subcadena de S (ocurre en varios lugares pero cualquiera servirá), y 2
es un programa CJam válido cuya salida es
2
que son los primeros M = 1 números primos, uno por línea, en orden.
Del mismo modo, la cadena 2N3N5
puede ser una subcadena de S en algún lugar, y 2N3N5
es un programa CJam válido que genera
2
3
5
que es el primer M = 3 números primos, uno por línea, en orden.
Puntuación
La presentación con la M más alta gana. El desempate va a la presentación publicada primero.
Detalles
No debería haber salida adicional además de los números primos individuales en cada línea, excepto una nueva línea final opcional después de la última línea. No hay entrada
La subcadena puede tener cualquier longitud siempre que sea finita.
La subcadena puede aparecer en cualquier lugar dentro de S. (y S puede contenerla en varios lugares).
El programa debe ser un programa completo. No puede suponer que se ejecuta en un entorno REPL.
El programa debe ejecutarse y finalizar en un tiempo finito sin errores.
"Nueva línea" puede interpretarse como cualquier representación común de nueva línea necesaria para su sistema / intérprete / etc. Solo trátalo como un personaje.
Debe dar el índice de S donde comienza su subcadena, así como la longitud de la subcadena, si no la subcadena misma. No solo puede mostrar que la subcadena debe existir.
Relacionado: Buscando programas en un gran tablero de Boggle
fuente
Respuestas:
Lenguage , M = ∞
Todos los programas comienzan al principio de la cadena. El siguiente programa de Python mal escrito calcula cuántos caracteres se necesitan para una M.
Por ejemplo, para M = 5, el programa es el primero 2458595061728800486379873255763299470031450306332287344758771914371767127738856987726323081746207100511846413417615836995266879023298634729597739072625027450872641123623948113460334798483696686473335593598924642330139401455349473945729379748942060643508071340354553446024108199659348217846094898762753583206697609445347611002385321978831186831089882700897165873209445730704069057276108988230177356 caracteres.
fuente
CJam, M = 2
Corto y dulce:
Esta secuencia comienza en la posición 54398, usando la indexación 1 de la cadena. Puedes probarlo en línea aquí .
Intenté buscar algunas variaciones posibles, pero esta fue la primera solución que encontré.
Actualmente estoy tratando de encontrar una versión M = 3, pero no espero encontrarla dentro de un período de tiempo razonable. Si la secuencia es uniformemente aleatoria (una aproximación), entonces el índice inicial para una secuencia de longitud 5 podría ser del orden de 10 ^ 9.
fuente
1e6{mp},97f%' f+"2NZ"#
enlace (toma un tiempo: p)