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.