Dies ist eine Herausforderung für Bullen und Räuber. Dies ist der Thread des Polizisten. Der Räuberfaden ist da .
Als Cop müssen Sie eine beliebige Sequenz aus dem OEIS auswählen und ein Programm p schreiben, das die erste Ganzzahl aus dieser Sequenz ausgibt. Sie müssen auch einige Zeichenfolge finden s . Wenn Sie s irgendwo in p einfügen , muss dieses Programm die zweite Ganzzahl aus der Sequenz ausgeben. Wenn Sie s + s an derselben Stelle in p einfügen , muss dieses Programm die dritte Ganzzahl aus der Sequenz ausgeben. s + s + s am selben Ort drucken das vierte und so weiter und so fort. Hier ist ein Beispiel:
Python 3, Sequenz A000027
print(1)
Die versteckte Zeichenfolge besteht aus zwei Bytes .
Die Zeichenfolge gibt die dritte Ganzzahl usw. aus +1
, da das Programm print(1+1)
die zweite Ganzzahl in A000027 ausgibt print(1+1+1)
.
Cops müssen die Sequenz, das ursprüngliche Programm p und die Länge des versteckten Strings s enthüllen . Räuber knacken eine Einreichung, indem sie eine Zeichenfolge bis zu dieser Länge und den Ort finden, an dem sie eingefügt werden soll, um die Sequenz zu erstellen. Die Zeichenfolge muss nicht mit der beabsichtigten Lösung übereinstimmen, um ein gültiger Riss zu sein, und auch nicht mit der Position, an der sie eingefügt wurde.
Regeln
Ihre Lösung muss für eine beliebige Zahl in der Sequenz funktionieren, oder zumindest bis zu einer angemessenen Grenze, bei der Speicherbeschränkungen, Ganzzahl- / Stapelüberlauf usw. nicht berücksichtigt werden.
Der gewinnende Räuber ist der Benutzer, der die meisten Einsendungen knackt, wobei der Tiebreaker derjenige ist, der diese Anzahl von Rissen zuerst erreicht hat.
Der Sieger Cop ist der Cop mit dem kürzesten String s , die nicht geknackt wird. Tiebreaker ist der kürzeste p . Wenn es keine ungerissenen Vorlagen gibt, gewinnt der Cop, dessen Lösung für die längste Zeit ungerissen war.
Um als sicher eingestuft zu werden, muss Ihre Lösung 1 Woche lang ungerissen bleiben und dann die verborgene Zeichenfolge (und die Position, an der sie eingefügt werden soll) aufgedeckt werden.
s darf nicht verschachtelt sein, es muss Ende an Ende verkettet werden. Zum Beispiel, wenn s ist
10
, würde jede Iteration gehen ,10, 1010, 101010, 10101010...
anstatt10, 1100, 111000, 11110000...
Es ist akzeptabel, nicht mit dem ersten, sondern mit dem zweiten Term der Sequenz zu beginnen.
Wenn Ihre Sequenz eine endliche Anzahl von Begriffen enthält, kann das Überschreiten des letzten Begriffs zu undefiniertem Verhalten führen.
Alle kryptografischen Lösungen (z. B. das Überprüfen des Hashs der Teilzeichenfolge) werden gesperrt.
Wenn s Nicht-ASCII-Zeichen enthält, müssen Sie auch die verwendete Codierung angeben.
quelle
Antworten:
MATL , Sequenz A005206 . Gebrochene von SamYonnou
Probieren Sie es online!
Die versteckte Zeichenfolge hat 8 Bytes .
quelle
Python 2 , Sequenz A138147 ( geknackt )
Probieren Sie es online!
Die verborgene Zeichenfolge besteht aus 7 Bytes . Die Reihenfolge lautet:
quelle
Keg , Sequenz A000045
Die verborgene Zeichenfolge ist ≤ 6 Byte (um die aktualisierten Crack-Regeln zu erfüllen)
quelle
Geknackt
Brain-Flak , Sequenz A000290 (Quadratische Zahlen)Probieren Sie es online!
Die verborgene Zeichenfolge besteht aus 6 Bytes .
Lustige Tatsache:
Ich habe diese Eigenschaft "entdeckt", als ich dieses auf Brain Flak basierende Spiel spielte . Die versteckte Zeichenfolge war ein zufällig generiertes Objekt, von dem ich herausgefunden habe, dass es sehr nützlich ist.
quelle
Java 8+, Sequenz A010686 ( geknackt von xnor )
Lambda-Funktion.
Die verborgene Zeichenfolge ist ≤ 5 Byte
quelle
^2<<1
aber das ist das Gleiche.Python 3 , Sequenz A096582
Das ist wirklich trivial, da ich noch nie Cops and Robbers-Herausforderungen ausprobiert habe.
Die verborgene Zeichenfolge besteht aus 3 Bytes.
quelle
Pyret , Sequenz A083420 , Gebrochen
Die verborgene Zeichenfolge hat 4 Byte oder weniger.
quelle
Python 3 , Sequenz A014092 - ( geknackt )
Probieren Sie es online!
Die verborgene Sequenz besteht aus 82 Bytes .
Mein beabsichtigter Code (der sich nicht auf die Goldbach-Vermutung stützt) war:
Gebrochene von NieDzejkob , der verwendeten Goldbach - Vermutung es in einem lösen magischen 42 Zeichen. Gut gemacht!
quelle
Forth (gforth) , A000042 - ( geknackt )
Probieren Sie es online!
Die verborgene Sequenz besteht aus 5 Bytes und kann problemlos Hunderte von Begriffen verarbeiten.
Eine Ein-Byte-Lösung, die aufgrund eines Ganzzahlüberlaufs unterbrochen wird, ist ebenfalls möglich. In der Tat würde ich sagen, dass es peinlich trivial ist. Während der Aufforderungstext es Ihnen unter einigen Interpretationen ermöglichen könnte, dies als Riss zu bezeichnen, rate ich Ihnen dringend, dies nicht zu tun.
quelle
V , Sequenz A000290 . Von Kühen geknackt quaken
Probieren Sie es online!
Die verborgene Zeichenfolge besteht aus 5 Bytes .
quelle
Desktop - Rechner , Sequenz A006125
Die versteckte Zeichenfolge ≤ 12 Byte .
quelle
Brain-Flak , Sequenz A000984 (zentrale Binomialkoeffizienten)
Probieren Sie es online!
Die verborgene Zeichenfolge hat 36 Byte oder weniger.
quelle
Python 3 , A268575
Probieren Sie es online!
Die verborgene Sequenz besteht aus 102 Bytes.
quelle
Haskell , Sequenz A083318 ( geknackt )
Probieren Sie es online!
Die verborgene Zeichenfolge besteht aus 5 Bytes . Die Reihenfolge lautet:
quelle
Brain-Flak , Sequenz A000578 ( Würfelnummern )
Probieren Sie es online!
Die verborgene Zeichenfolge ist 16 Byte
quelle
Geknackt
cQuents , Sequenz A003617Probieren Sie es online!
Die versteckte Zeichenfolge ist 1 Byte .
quelle
Unefunge-98 (PyFunge) , Sequenz A000108
Probieren Sie es online!
Die verborgene Sequenz besteht aus 19 Bytes .
quelle
MATL , Sequenz A000796 . Gebrochene von SamYonnou
Probieren Sie es online!
Die versteckte Zeichenfolge besteht aus 3 Bytes .
quelle
Python 3 , A008574 , geknackt von xnor
Probieren Sie es online!
Fügen Sie 4 Bytes ein, um A008574 abzuschließen. A008574: a (0) = 1, danach a (n) = 4n.
quelle
AsciiDots , 36 Bytes, A019523
Probieren Sie es online!
Die versteckte Zeichenfolge hat 12 Bytes .
quelle
Haskell , Sequenz A014675 , geknackt von Nimi
Probieren Sie es online!
Die verborgene Sequenz ist 35 Bytes .
Hier ist meine beabsichtigte Lösung:
quelle
VDM-SL , Sequenz A000312
Die verborgene Zeichenfolge hat 33 Byte oder weniger
quelle
Haskell, A000045 (Fibonacci) - Gebrochen
Ich habe eine Lösung mit satten 23 Bytes. Ich erwarte nicht, dass dies für lange Zeit sicher ist, aber es hat Spaß gemacht, es zu erfinden.
Lösung:
quelle
Java 8+ , 1044 Bytes, Sequenz A008008 (Sicher)
Probieren Sie es online!
Kann mit einer versteckten Zeichenfolge der Größe 12 gelöst werden . Kann definitiv mehr golfen werden, aber es gibt keine Möglichkeit, dass dies tatsächlich gewinnt. Ich wollte nur aus Respekt für die Nummer 8008 beitragen.
Hinweis: Bevor sich jemand beschwert, dass die Sequenz hartcodiert ist, habe ich dies bis zum ersten Term getestet, der von der Hartcodierung abweicht (13. Term = 307), und es wird korrekt, wenn auch langsam. Dies ist auch der Grund, warum es
long
anstelle von verwendet wirdint
, da es sonst vor diesem Begriff überläuft.Update (12. Juli 2019) : Es wurde aktualisiert, um die Leistung zu verbessern. Berechnet jetzt den 13. Ausdruck in 30 Sekunden auf meinem Computer anstelle von 5 Minuten.
Update (17. Juli 2019) : Behobene Fehler bei Schleifengrenzen für die
g
Funktion und Arraylängengrenzen im unteren Bereich derf
Funktion. Diese Fehler sollten schließlich Probleme verursacht haben, aber nicht früh genug, um durch einfaches Überprüfen der Ausgabe aufgefangen zu werden. In beiden Fällen kann ich die "sichere" Frist bis zum 24. Juli verlängern, da das Vorhandensein dieser Bugs 5 Tage nach dem Spiel einige Leute genug verwirrt haben könnte, um dieses Rätsel nicht lösen zu können.Update (18. Juli 2019) : Nach einigen Tests habe ich bestätigt, dass Überläufe nach dem 4. Ausdruck in der Sequenz beginnen und die Gültigkeit der Ausgabe nach dem 19. Ausdruck beeinträchtigen. Auch in dem Programm, wie es hier geschrieben ist, dauert jeder aufeinanderfolgende Term ungefähr fünfmal länger als der vorherige. Das 15. Semester dauert auf meinem Computer ungefähr 14 Minuten. Die eigentliche Berechnung des 19. Semesters mit dem geschriebenen Programm würde also über 6 Tage dauern.
Hier ist auch der Code mit vernünftigen Abständen / Einrückungen, sodass das Lesen ein bisschen einfacher ist, wenn Benutzer keine IDE mit automatischer Formatierung zur Hand haben.
Lösung
quelle
Brachylog , 7 Bytes ( Brachylog SBCS ), A114018 ( Gebrochen )
Knack es online!
Die Zeichenfolge besteht aus 2 oder weniger Bytes.
quelle
b
ist ziemlich verdächtig ...C # (.NET Core), A003678, 29727 Byte (sicher)
Die verborgene Sequenz ist 4 Bytes oder weniger.
quelle
.code.tio(1,284): error CS0103: The name 'CodeDomProvider' does not exist in the current context .code.tio(1,390): error CS0246: The type or namespace name 'CompilerParameters' could not be found (are you missing a using directive or an assembly reference?)
System.CodeDom
, außerdem werden Dateien erstellt, damit dies auf tioSystem.CodeDom
Prolog (SWI) , 28 Byte, A011557 , sicher
Probieren Sie es online!
(Ich bin mir nicht sicher, was als vollständiges Programm für Prolog gilt, aber dies funktioniert als Programm für TIO.)
Die verborgene Zeichenfolge ist 5 Byte oder weniger.
Ich bin ein bisschen überrascht, dass das eine Woche überstanden hat ... Die versteckte Saite ist
quelle