Dies ist der Thread der Cops. Räuberfaden ist hier .
Hintergrund
Boggle ist ein Brettspiel, bei dem die Spieler englische Wörter auf einem 4-mal-4-Brett mit zufälligen Alphabeten finden müssen. Wörter können konstruiert werden, indem nacheinander benachbarte Zellen auf der Tafel ausgewählt werden. ("benachbart" bedeutet horizontal, vertikal oder diagonal benachbart.) Dieselbe Zelle kann auch nicht mehr als einmal in einem Wort verwendet werden.
Das Folgende ist ein Beispielboard:
I L A W
B N G E
I U A O
A S R L
Auf diesem Board BINGO
, ORANGE
und WEARS
gelten Worte, aber SURGE
und RUSSIA
nicht sind:
SURGE
: Es gibt kein benachbartes Paar auf dem BrettRG
.RUSSIA
:S
kann nicht zweimal verwendet werden.
Modified Boggle ist eine modifizierte Version von Boggle mit den folgenden Regeln:
- Die
m
Kartengröße ist -by-n
, wobeim
undn
kann eine beliebige positive ganze Zahl sein. - Jede Zelle kann ein beliebiges Byte zwischen 0 und einschließlich 255 enthalten.
- Eine Zelle kann mehrmals verwendet werden, jedoch nicht zweimal hintereinander.
Unter Verwendung des Beispiels Platine oben, zusätzlich zu BINGO
, ORANGE
und WEARS
, LANGUAGE
wird eine gültige Zeichenfolge (da G
zweimal verwendet wird, aber nicht zweimal hintereinander) , aber RUSSIA
ist immer noch nicht (durch SS
pair).
Hier ist ein weiteres Beispiel mit einem Codefragment. Die Zeichenfolge from itertools import*\n
befindet sich auf der folgenden Tafel, jedoch nicht from itertoosl import*
oder from itertools import *
:
f i ' ' s
r t m l
e o o p
\n * t r
Beachten Sie, dass Sie zwei benötigen o
, um die oo
Sequenz abzugleichen.
Cop's Herausforderung
Schreiben Sie ein vollständiges Programm in der Sprache Ihrer Wahl, das die folgenden Regeln erfüllt:
- Das Programm sollte etwas drucken, das über mehrere Läufe konsistent ist.
- Das Programm sollte in ungefähr 5 Sekunden beendet sein.
- Das Programm nimmt möglicherweise keine Eingabe entgegen.
- Sowohl das Programm als auch die Ausgabe sollten mindestens 2 Bytes betragen.
- Alles, was mit Hash-Funktionen, PRNGs oder Kryptografie zu tun hat, ist nicht zulässig.
Dann legen Sie Ihr Programm aus und Ausgabe in zwei separate modifizierten boggle Bretter . Jedes Brett kann ein Nichtquadrat sein. Beachten Sie, dass 1-mal-N- und 2-mal-N-Karten sowohl für den Polizisten als auch für den Räuber besondere Herausforderungen darstellen können. Wenn Sie möchten, dass einige Zellen auf einer Platine unbrauchbar werden (um weitere Einschränkungen hinzuzufügen), können Sie einige nutzlose Bytes auswählen und die Löcher damit füllen.
Wenn Sie beispielsweise ein 2x2-Raster nur mit horizontalen / vertikalen Bewegungen möchten, können Sie dies stattdessen tun:
a b
c d
-----------
X a X
c X b
X d X
Geben Sie in Ihrer Einreichung die von Ihnen verwendete Sprache, die Länge des Quellcodes und der Ausgabe sowie die beiden Boggle-Boards an. Beachten Sie, dass für Räuber kürzerer Code und / oder längere Ausgabe zulässig sind. Sie können also festlegen, dass Platz für die Anzahl der Bytes vorhanden sein soll (dh Sie geben längeren Code und / oder eine kürzere Ausgabe als Ihre eigentliche Lösung an).
Wenn Ihre Karte einige nicht druckbare Zeichen enthält, können Sie die Karte stattdessen als Bytewerte angeben.
Nach einer Woche, in der ein Polizist veröffentlicht wird, kann er durch das Poster als sicher gekennzeichnet werden, wenn er bis dahin nicht geknackt ist. Der Polizist ist noch offen für Räuber, bis er tatsächlich als sicher markiert ist. Ein sicherer Polizist kann nicht geknackt werden, und das Poster sollte die beabsichtigte Lösung enthalten.
Sie sollten die Bretter so weit wie möglich verschleiern, da die Herausforderung des Räubers darin besteht, Ihre Einreichung zu knacken, indem Sie den Code und seine Ausgabe auf den Brettern finden. Wenn Sie einen langen Code in ein kleines Board packen möchten, können Antworten auf die ursprüngliche Modified Boggle-Herausforderung einige Einblicke geben.
Scoring für Polizisten
Da es schwer zu sagen ist, ob ein größeres oder kleineres Board schwerer zu knacken ist, zählt jede sichere Cop-Einreichung als Punktzahl 1. Der Benutzer mit der höchsten Punktzahl gewinnt. Es wird empfohlen, mit verschiedenen Sprachen und kreativen Ansätzen teilzunehmen.
Cop Beispiel & Formatierung
# Japt, code 9 bytes, output 20 bytes
Code board: 2 rows, 2 columns
`l
íÏ
As byte values:
96 108
237 207
Output board: 3 rows, 3 columns
175
120
643
Geändertes Boggle-Überprüfungsskript
Alle folgenden Skripte enthalten eine Beispieleingabe.
Skript für Zeichenkette (Code / Ausgabe) & Boggle. Dies unterstützt keine mehrzeilige Zeichenfolge. Das Eingabeformat ist
- eine einzelne Zeichenfolge (entweder Code oder Ausgabe), gefolgt von
- das rohe Boggle Board.
Skript für Zeichenkette mit Byte-Wert-Boggle. Verwenden Sie diese Option, wenn die Zielzeichenfolge druckbar ist, jedoch eine oder mehrere Zeilenumbrüche enthält. Das Eingabeformat ist
- die Anzahl der Zeilen für die Zeichenfolge,
- rohe Zeichenfolge (möglicherweise mehrzeilig)
- das Boggle Board als Bytewerte.
Skript für Byte-Wert-String & Boggle. Verwenden Sie diese Option, wenn die Zielzeichenfolge ein oder mehrere nicht druckbare Zeichen enthält. Das Eingabeformat ist
- eine einzelne Zeichenfolge (entweder Code oder Ausgabe) als Bytewerte, gefolgt von
- das Boggle Board als Bytewerte.
[]+.
, aber ich denke, das könnte unmöglich sein. Möchte jemand es versuchen?