Modifizierter Boggle-fähiger Code und Ausgabe: CnR Edition (Cops)

8

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, ORANGEund WEARSgelten Worte, aber SURGEund RUSSIAnicht sind:

  • SURGE: Es gibt kein benachbartes Paar auf dem Brett RG.
  • RUSSIA: Skann nicht zweimal verwendet werden.

Modified Boggle ist eine modifizierte Version von Boggle mit den folgenden Regeln:

  • Die mKartengröße ist -by- n, wobei mund nkann 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, ORANGEund WEARS, LANGUAGEwird eine gültige Zeichenfolge (da Gzweimal verwendet wird, aber nicht zweimal hintereinander) , aber RUSSIAist immer noch nicht (durch SSpair).

Hier ist ein weiteres Beispiel mit einem Codefragment. Die Zeichenfolge from itertools import*\nbefindet 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 ooSequenz 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.
Bubbler
quelle
Nur um sicherzugehen, dass sowohl das Ausgabe- als auch das Eingabebyte wiederverwendet werden können, aber nicht zweimal hintereinander verwendet werden können, oder?
Maxb
@maxb Sie haben Recht, außer dass es sich um Code handelt , nicht um Eingabe (der Code kann überhaupt keine Eingabe annehmen).
Bubbler
Mein Fehler, ich meinte den Code. Gibt es eine Begrenzung der Ausgabelänge?
Maxb
@maxb Keine Einschränkungen, aber beachten Sie, dass Ihr Programm in 5 Sekunden beendet werden sollte.
Bubbler
Ich habe versucht, eine nicht triviale Ausgabe nur für Brainfuck zu finden []+., aber ich denke, das könnte unmöglich sein. Möchte jemand es versuchen?
Jo King

Antworten:

3

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

aN

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.

Khuldraeseth na'Barya
quelle
1
Was zum JSF ** k! lmao, und ich wette, die Ausgabe istNaN
Shieru Asakoto
@ ShieruAsakoto Du hattest einen gültigen Riss. Ich werde dies auf den ursprünglichen Zustand zurücksetzen, und Sie können Ihre Antwort wiederherstellen. Ich werde mit Klarstellung erneut einreichen.
Khuldraeseth na'Barya
Zurücksetzen
Shieru Asakoto
3

JavaScript (Node.js), Code 53 Bytes, Ausgabe 41 Bytes, von Arnauld geknackt

Code Board: 3 Zeilen mal 6 Spalten:

cog(n)
lsn1()
e.+<<;

Ausgabeplatine: 4 Zeilen mal 6 Spalten:

481534
270906
602148
53829n

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**128mit einem nachgestellten nZeichen, das die Zahl als BigInt-Literal markiert.

Shieru Asakoto
quelle
2
Wenn dies nicht beginnt console.log, werde ich so beeindruckt sein
Quintec
2
Eine einzelne Zahl allein kann nicht als 41-stellig gedruckt werden. Es sollte eine Möglichkeit geben, eine Zeichenfolge umzuwandeln, aber ... consoleist nur zu Beginn verfügbar, keine Zuweisung, kein Zeichenfolgenliteral, keine Klammern (also kein Array-Literal oder Indizierung). Ich habe sogar Node Globals und seine consoleEigenschaften überprüft , aber nichts passt dort hin.
Bubbler
Gebrochen
Arnauld
2

JavaScript (Node.js), Code 88 Bytes, Ausgabe 2 Bytes, von Arnauld mit 27 Bytes geknackt

Code Board: 7 Zeilen mal 9 Spalten:

e.i--)=%5
lc;,2s*17
fosn8407%
gnr785138
s(;527067
=);s%1419
4n,i=1832

Ausgabeplatine: 1 Zeilen mal 2 Spalten:

0n

Die Ausgabe ist offensichtlich, der Code jedoch nicht. ;)

Meine ursprüngliche Antwort war ein LL-Test von M 127 , das war

for(s=4n,i=125;i;s%=170141183460469231731687303715884105727n,i--)s=s*s-2n;console.log(s)

Arnauld's Antwort benutzte die Semikolons, um einen kürzeren Riss zu überbrücken, und ich habe den s%=sTeil überhaupt nicht erwartet (oder realisiert) :

s=4n;s%=s;7n;console.log(s)

Ü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

Shieru Asakoto
quelle
Gebrochen
Arnauld
1

MathGolf, Code 42 Bytes, gibt 22 Bytes aus

Code Board: 3 Zeilen mal 7 Spalten

 r5 qÄ 
~←▲↔▼→~
 Äq 5r 

Ausgabeplatine: 3 Zeilen mal 6 Spalten:

421
402
135

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".

maxb
quelle
1

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

aN

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.

Khuldraeseth na'Barya
quelle
Ist das nicht identisch mit deinem anderen JS-Beitrag?
Shaggy
@Shaggy Dem ersten fehlte die vollständige Programm- Erwähnung und er wurde stattdessen als REPL geknackt.
Arnauld
1

Python 3, Code 56 Bytes, Ausgabe 69 Bytes, SAFE

Code Board: 4 Zeilen mal 10 Spalten:

  print(1,
b; f,)*l(1
 =lamb+a,)
ese d:(-1)

Ausgabeplatine: 7 Zeilen mal 7 Spalten:

1466900
3427430
1304212
9653895
0511633
5680228
4437679

Viel schwieriger als meine erste Herausforderung;)

Erwarteter Code und Ausgabe:

Code:

l=lambda a,b:(a+b)*l(a-1,a*b)if a else b;print(l(11,11))

Ausgabe:

421827435070654423113161304555505960246647934329322186026783332352000
Shieru Asakoto
quelle
Ich liebe, wie Sie nicht Lambda xD bilden können
Quintec
Sie können einen Brief wiederverwenden, nur nicht zweimal direkt hintereinander. (Ich glaube, ich habe die Form dieses Downs, aber es ist sehr optimierbar, und diese Ausgabe kann alles sein ... Ich habe ein 56-Byte-Programm mit 69-Byte-Ausgabe gefunden, aber es befindet sich nicht auf dem Boggle-Board.)
Lynn
OK, ich habe gerade festgestellt, dass die Ausgabe länger sein darf, was die Dinge ändert. Aber ich sehe immer noch keinen Weg, es zu "tricksen" (ich wette, es gibt einen Weg, etwas auszugeben10^lots ).
Lynn
1
Ich wette, es sollte so aussehen l=lambda a,b:+l(a-1,a*b)if a else b;print(l(11,1))... Aber ich kann keinen finden.
tsh
0

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

╒Æ■r
îm4~

Ausgabeplatine: 2 Zeilen mal 3 Spalten

140
412
maxb
quelle
0

Jelly, 17-Byte-Code, 19-Byte-Ausgabe

Die allgemeine Methode sollte nicht zu schwer herauszufinden sein.

Code Board

»V
”;
“;

Ausgangskarte

Krgwn
Ubots
RAbbt
Dylnan
quelle
0

J. (REPL), Code 9 Bytes, Ausgabe 10000 Bytes

Code Board: 3 Zeilen, 3 Spalten

epi
j.r
oI5

Ausgabekarte: 3 Zeilen, 2 Spalten als Bytewerte

10  10
48  49
32  255

Im Wesentlichen \n\n/ 01/<space><don't use> .

Die beabsichtigte Lösung liefert eine Ausgabe von 20008 Byte.

Bubbler
quelle