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.
quelle
[]+.
, aber ich denke, das könnte unmöglich sein. Möchte jemand es versuchen?Antworten:
JavaScript, 1443 Byte - Code, 3 Bytes ausgegeben, rissig in Momenten von @ShieruAsakoto
Code Board, 3 Zeilen x 4 Spalten
Ausgabekarte, 1 Zeile mal 2 Spalten
Ein bisschen offensichtlich, was die Ausgabe ist.
Es wird der Code sein, der Spaß macht, ihn zu knacken.Ich habe vergessen zu erwähnen, dass es ein vollständiges Programm sein sollte (und implizierte, dass dies nicht der Fall war; siehe Abschnitt unten). Für die wahre Herausforderung siehe meine andere Antwort .Ich glaube nicht, dass dies Node.js ist, aber mein Wissen in diesem Bereich ist Null. Was ich sagen kann ist, dass es in meiner Konsole sowohl in Edge als auch in Chrome ausgeführt wird.
quelle
NaN
JavaScript (Node.js), Code 53 Bytes, Ausgabe 41 Bytes, von Arnauld geknackt
Code Board: 3 Zeilen mal 6 Spalten:
Ausgabeplatine: 4 Zeilen mal 6 Spalten:
Hinweis: Der Code funktioniert nur mit V8 JS-Engines, Version 6.7 oder höher
Meins war
console.log(1n+1n+1n<<(1n+1n+1n+1n<<1n+1n+1n+1n+1n));
mit dem Semikolon (frag nicht warum) und die Ausgabe ist ja,3 * 2**128
mit einem nachgestelltenn
Zeichen, das die Zahl als BigInt-Literal markiert.quelle
console.log
, werde ich so beeindruckt seinconsole
ist nur zu Beginn verfügbar, keine Zuweisung, kein Zeichenfolgenliteral, keine Klammern (also kein Array-Literal oder Indizierung). Ich habe sogar Node Globals und seineconsole
Eigenschaften überprüft , aber nichts passt dort hin.JavaScript (Node.js), Code 88 Bytes, Ausgabe 2 Bytes, von Arnauld mit 27 Bytes geknackt
Code Board: 7 Zeilen mal 9 Spalten:
Ausgabeplatine: 1 Zeilen mal 2 Spalten:
Die Ausgabe ist offensichtlich, der Code jedoch nicht. ;)
Meine ursprüngliche Antwort war ein LL-Test von M 127 , das war
Arnauld's Antwort benutzte die Semikolons, um einen kürzeren Riss zu überbrücken, und ich habe den
s%=s
Teil überhaupt nicht erwartet (oder realisiert) :Übrigens haben meine 3 Beiträge absolut nichts mit Hash-Funktionen, PRNGs oder Kryptographie zu tun. Ich schwöre, bei diesen drei geht es nur um Zahlenmanipulationen.
Die Codeplatine enthält nicht verwendete Bytes
quelle
MathGolf, Code 42 Bytes, gibt 22 Bytes aus
Code Board: 3 Zeilen mal 7 Spalten
Ausgabeplatine: 3 Zeilen mal 6 Spalten:
Dies ist etwas länger, aber ich gebe einen kleinen Hinweis: Die Code-Tafel soll einer Fliege ähneln, und Sie müssen sie möglicherweise mehrmals "binden".
quelle
JavaScript, 1443 Byte Code, 3 Bytes Ausgabe, geknackt von @Bubbler
Ein vollständiges Programm.
Code Board, 3 Zeilen x 4 Spalten
Ausgabekarte, 1 Zeile mal 2 Spalten
Ein bisschen offensichtlich, was die Ausgabe ist. Es wird der Code sein, der Spaß macht, ihn zu knacken.
Ich glaube nicht, dass dies Node.js ist, aber mein Wissen in diesem Bereich ist Null. Was ich sagen kann ist, dass es sowohl in Edge als auch in Chrome läuft. Mit "Vollprogramm" meine ich, dass es ausgeführt wird, wenn es zwischen
<script>
und</script>
in einer HTML-Datei platziert wird.quelle
Python 3, Code 56 Bytes, Ausgabe 69 Bytes, SAFE
Code Board: 4 Zeilen mal 10 Spalten:
Ausgabeplatine: 7 Zeilen mal 7 Spalten:
Viel schwieriger als meine erste Herausforderung;)
Erwarteter Code und Ausgabe:
quelle
10^lots
).l=lambda a,b:+l(a-1,a*b)if a else b;print(l(11,1))
... Aber ich kann keinen finden.MathGolf, Code 7 Bytes, gibt 12 Bytes aus
Nur eine erste einfache Herausforderung, wenn Sie in MathGolf einsteigen möchten!
Code Board: 2 Zeilen mal 4 Spalten
Ausgabeplatine: 2 Zeilen mal 3 Spalten
quelle
Jelly, 17-Byte-Code, 19-Byte-Ausgabe
Die allgemeine Methode sollte nicht zu schwer herauszufinden sein.
Code Board
Ausgangskarte
quelle
J. (REPL), Code 9 Bytes, Ausgabe 10000 Bytes
Code Board: 3 Zeilen, 3 Spalten
Ausgabekarte: 3 Zeilen, 2 Spalten als Bytewerte
Im Wesentlichen
\n\n
/01
/<space><don't use>
.Die beabsichtigte Lösung liefert eine Ausgabe von 20008 Byte.
quelle