Weisen wir den 95 druckbaren ASCII-Zeichen die Nummern 0 bis 94 zu :
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~
Das Leerzeichen ist 0, !
ist 1 usw. bis ~
94. Wir weisen tab ( \t
) auch 95 und newline ( \n
) 96 zu .
Betrachten Sie nun die unendliche Zeichenfolge, deren N-tes Zeichen das Zeichen darüber ist, dem die N-te Primzahl Modulo 97 zugewiesen wurde. Wir nennen diesen String S.
Zum Beispiel ist die erste Primzahl 2 und 2 mod 97 2 ist , und 2 zugeordnet ist "
, so dass das erste Zeichen von S ist "
. In ähnlicher Weise ist die 30. Primzahl 113 und 113 mod 97 ist 16 und 16 ist zugewiesen 0
, so dass das 30. Zeichen von S ist 0
.
Die ersten 1000 Zeichen von S lauten wie folgt:
"#%'+-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 wandelt Tabulatoren in Leerzeichen um. Hier ist also ein PasteBin mit intakten Tabulatoren.
Herausforderung
Suchen Sie einen Teilstring von S, der ein gültiges Programm in der Sprache Ihrer Wahl ist und die ersten M Primzahlen ausgibt, eine pro Zeile, um eine positive ganze Zahl M zu erhalten.
Zum Beispiel 2
ist es ein Teilstring von S (er kommt an mehreren Stellen vor, aber jeder wird es tun) und 2
ist ein gültiges CJam- Programm, dessen Ausgabe ist
2
Dies ist die erste M = 1 Primzahl, eine pro Zeile, in der Reihenfolge.
In ähnlicher Weise kann die Zeichenfolge 2N3N5
irgendwo 2N3N5
eine Teilzeichenfolge von S sein und ist ein gültiges CJam-Programm, das ausgegeben wird
2
3
5
Dies ist die erste M = 3 Primzahl, eine pro Zeile, in der Reihenfolge.
Wertung
Die Einreichung mit dem höchsten M gewinnt. Tie Breaker geht an die zuerst gepostete Einreichung.
Einzelheiten
Außer den einzelnen Primzahlen in jeder Zeile sollte keine zusätzliche Ausgabe erfolgen, mit Ausnahme einer optionalen nachgestellten neuen Zeile nach der letzten Zeile. Es gibt keine Eingabe.
Der Teilstring kann beliebig lang sein, solange er endlich ist.
Der Teilstring kann an einer beliebigen Stelle in S vorkommen. (Und S kann ihn an mehreren Stellen enthalten.)
Das Programm muss ein vollwertiges Programm sein. Sie können nicht davon ausgehen, dass es in einer REPL-Umgebung ausgeführt wird.
Das Programm muss in einer begrenzten Zeit ohne Fehler ausgeführt und beendet werden.
"Newline" kann als jede allgemeine Newline-Darstellung interpretiert werden, die für Ihr System / Ihren Interpreter / etc. Erforderlich ist. Behandle es einfach als einen Charakter.
Sie müssen den Index von S angeben, an dem Ihre Teilzeichenfolge beginnt, sowie die Länge der Teilzeichenfolge, wenn nicht die Teilzeichenfolge selbst. Sie können nicht nur zeigen, dass der Teilstring vorhanden sein muss.
Verwandte: Suche nach Programmen in einem riesigen Boggle-Board
quelle
Antworten:
Linguage , M = ∞
Alle Programme beginnen am Anfang der Zeichenfolge. Das folgende schlecht geschriebene Python-Programm berechnet, wie viele Zeichen für ein bestimmtes M benötigt werden.
Zum Beispiel für M = 5, ist das Programm die ersten 2458595061728800486379873255763299470031450306332287344758771914371767127738856987726323081746207100511846413417615836995266879023298634729597739072625027450872641123623948113460334798483696686473335593598924642330139401455349473945729379748942060643508071340354553446024108199659348217846094898762753583206697609445347611002385321978831186831089882700897165873209445730704069057276108988230177356 Zeichen.
quelle
CJam, M = 2
Kurz und bündig:
Diese Sequenz beginnt an Position 54398 unter Verwendung einer 1-Indizierung der Zeichenfolge. Sie können es hier online testen .
Ich habe versucht, nach einigen möglichen Variationen zu suchen, aber dies war die erste Lösung, die ich gefunden habe.
Ich versuche derzeit, eine M = 3-Version zu finden, erwarte jedoch nicht, innerhalb eines angemessenen Zeitraums eine zu finden. Wenn die Sequenz gleichmäßig zufällig ist (eine Annäherung), könnte der Startindex für eine Sequenz der Länge 5 in der Größenordnung von 10 ^ 9 liegen.
quelle
1e6{mp},97f%' f+"2NZ"#
Link (dauert eine Weile: p)