Dies ist der Thread des Polizisten. Der Räuberfaden ist da .
Schreiben Sie einen Code, der eine Eingabe entgegennimmt n
und eine n-mal-n "Schlangenmatrix" erstellt.
Eine Schlangenmatrix ist eine Matrix, die diesem Muster folgt:
3-mal-3:
1 2 3
6 5 4
7 8 9
und 4-mal-4:
1 2 3 4
8 7 6 5
9 10 11 12
16 15 14 13
Das genaue Ausgabeformat ist optional. Sie können zum Beispiel ausgeben [[1 2 3],[6 5 4],[7 8 9]]
, oder etwas ähnliches.
Sie müssen den Namen der Sprache und einen regulären Ausdruck angeben, der vollständig mit Ihrem Code übereinstimmt. Sie können wählen, wie detailliert Ihre Regex sein soll. Im Extremfall können Sie einen regulären Ausdruck schreiben, der zu jeder möglichen Zeichenfolge passt. In diesem Fall ist es sehr einfach, Ihren Code zu knacken. Sie müssen auch die Ausgabe für bereitstellen n=4
, damit Räuber das genaue Format kennen, für das Sie sich entschieden haben.
Sie können eine der auf regex101.com verfügbaren Regex- Varianten oder die Ruby- Variante verwenden.
- PCRE (PHP)
- Javascript
- Python
- Golang
- Rubin
Sie müssen angeben, welchen Sie verwenden.
Anmerkungen:
- Sie müssen alle einigermaßen großen unterstützen
n
. Sie können davon ausgehen, dass der Datentyp oder der Speicher nicht überläuft. Wenn der Standarddatentyp 8-Bit-Ganzzahlenn<=11
mit Vorzeichen ist , können Sie davon ausgehen , dass 8-Bit-Ganzzahlen ohne Vorzeichen sindn<=15
. - Die Räuber müssen mit dem Ausgabeformat der Übermittlung übereinstimmen, mit Ausnahme von führenden / nachfolgenden Leerzeichen und Zeilenumbrüchen, da dies möglicherweise durch die SE-Formatierung entfernt wurde.
Gewinnkriterium:
Der Gewinner ist die ungerissene Einsendung mit der kürzesten Regex, gemessen in der Anzahl der Zeichen.
Wenn Ihr Beitrag 7 Tage lang ungerissen geblieben ist, können Sie die beabsichtigte Lösung posten und Ihren Beitrag als sicher markieren.
quelle
.
.Antworten:
05AB1E , geknackt von mbomb007
Hoffentlich lustig zu knacken und nicht zu offensichtlich.
Regex (PCRE):
Ausgabe n = 4:
Originelle Lösung
quelle
\w
nein überein . Sie können sich an regex101.{0,2}
auf.?.?
-
in Klammern gesetzte Zeichenklasse ([+*\/%-]
) an die letzte Position setzen, damit Sie sie nicht verlassen müssen.Python 2 , Länge 62, geknackt
Regex (PCRE)
Beispielausgabe
quelle
Gelee , Länge 6, geknackt
Regex (PCRE)
Beispielausgabe
quelle
G
die Ausgabe richtig zu formatieren. Ich bin kurz davor, den Rest zu lösen, aber ich kann einfach nicht herausfinden, wie ich jeden anderen Punkt in einem Array mit JellyR, Länge 14 Durch Plannapus geknackt
Ich hoffe, ich habe diesen Regex richtig verstanden. Was ich sagen will ist 77 Zeichen ohne
<space>
,#
,;
und[
. Ich habe es hier getestetRegex
Beispielausgabe n = 4
quelle
05AB1E , Cracked by Value Ink
Lass es
uns noch ein bisschen besser machen :) Hoffentlich ein schönes Puzzle.
Regex (PCRE)
Ausgabe n = 4
quelle
> <> , Länge 49, Gebrochen von Aaron
Regex (Javascript)
Beispielausgabe (n = 4)
Das Formatieren ist etwas seltsam, aber das Überprüfen der Länge der Nummer hätte es viel länger gemacht. Könnte ein bisschen über Bord gegangen sein, nicht sicher!
Bearbeiten: Auch ich habe vergessen zu erwähnen, ich benutze den Anfangsstapel (-v Flag) für die Eingabe, nicht die üblichen Fischeingaben. Es tut uns leid!
Ursprünglicher Code:
Aarons ist viel einfacher! Die Komplexität meines ursprünglichen Codes basiert auf der Idee,
n[r]
jedes n-te Zeichen zu verwenden, um dieses Segment (diese Zeile) zu spiegeln und dann alle Zeichen auf einmal am Ende zu druckenquelle
..
ist kürzer als.{2}
;)Ohm , geknackt
Auch meine erste Cops and Robbers-Herausforderung, also sag mir, ob es Probleme mit diesem Muster gibt (zumal dies eine ziemlich unbekannte Sprache ist).
Regex (PCRE)
Ausgabe (n = 4)
quelle
.*
in Ihrer Regex haben, könnte es alles sein. Wenn die Sprache also Kommentare enthält, können sie jedes Programm schreiben, dem ein Kommentar folgt.PHP, 221 Bytes ( geknackt )
Ich hoffe es ist schwierig genug.
Regex (PCRE): 16 Bytes
Kein Leerzeichen, keine Kommentare, keine Verwendung von base64_decode. Habe Spaß.
Ausgabe
Ursprünglicher Code
quelle
base64_decode
da Ihr regulärer Ausdruck dies nicht verbietet.6
, die möglicherweise blockierenbase64_decode
.C # net46 ( geknackt )
( http://ideone.com/ works)
Regex PCRE Geschmackslänge 58 getestet bei Regex101
Nur die Methode ist regulär. Methode gibt ein 2d int [,] Array (int [4,4]) für eine Eingabe n = 4 zurück. Wenn gedruckt so aussieht:
Dies ist mein erster Einstieg in so etwas, lass es mich wissen, wenn ich etwas falsch gemacht habe. Ich versuche nicht, mit Regex-Länge zu gewinnen, aber ich bin gespannt, wie gut ich es geschafft habe, Rissbildung zu verhindern :)
Originalcode:
quelle
QBasic, Regexlänge 10 ( geknackt )
Regex
Sollte in jedem Regex-Geschmack funktionieren, aber wir werden es Python-Geschmack nennen.
HINWEIS: Meine Lösung verwendet unformatiertes QBasic. Nach der Formatierung stimmt der Code aufgrund von Leerzeichen nicht mit dem regulären Ausdruck überein. (Aber ich kann Ihnen sagen, dass dies die einzige Änderung ist, die einen Unterschied macht. Funktioniert
([A-Z]+ ?. ?)+
immer noch mit der formatierten Version.)Zu Testzwecken habe ich QB64 mit deaktivierter Code-Formatierung verwendet (unter Optionen> Code-Layout). Wenn Sie nichts herunterladen möchten, können Sie QBasic auch online unter archive.org ausführen (dort können Sie die Formatierung jedoch nicht deaktivieren).
Beispielausgabe
quelle
\w+\W
in\w*
und aufgeteilt werden kann\w\W
. (\w*
ist entwedernull
(trivial) oder\w+
(leicht mit einem Symbol einzuschleichen)).
sich nicht um ein Wort handelt. Es kann sich um einen Kleinbuchstaben oder eine Ziffer handeln. In der Tat könnte es sogar ein Großbuchstabe sein, falls das letzte Zeichen des Programms eins ist.Python 3, 55 Bytes (geknackt)
PCRE / Python / Golang Geschmack.
(Denken Sie daran, dass eine vollständige Übereinstimmung erforderlich ist . Angenommen,
^
und$
beim Testen.)Beispielausgabe:
Ursprüngliche Lösung:
Sollte 4 Bytes gekürzt haben: p
quelle
)
im zweiten Teil der Regex(
befindet sich in einer Charakterklasse, die nachprint
und vor endet{48}
. Ich habe eine Weile gebraucht, um es auch zu sehen. ;) (Das frühere Klammernpaar gehört ebenfalls zu einer Zeichenklasse.)dc , Regex Länge 12 Gebrochen von Seshoumara!
Dieser reguläre Ausdruck ist so einfach, dass ich den Geschmack von Regex nicht für wichtig halte - er sollte auf ganzer Linie funktionieren. (Beachten Sie das Leerzeichen nach dem # in der Regex.)
Ich habe alle vier Varianten bei regex101.com (PCRE / PHP, Javascript, Python und Golang) sowie die Ruby-Version bei rubular.com getestet. Das DC-Programm entspricht dem regulären Ausdruck in allen fünf regulären Ausdrücken.
Das DC-Programm nimmt seine Eingabe auf stdin und setzt seine Ausgabe auf stdout.
Beispielausgabe für Eingabe 4 (am Ende jeder Zeile befindet sich ein Leerzeichen):
Originalcode (hinzugefügt, nachdem geknackt wurde)
Dies wurde von @seshoumara geknackt . Hier ist mein vorgesehener Code:
Erläuterung:
Die Summe oben auf dem Stapel ist jetzt die nächste Zahl, die gedruckt werden soll:
Es ist leicht zu erkennen, dass dies richtig ist, wenn die Zeilennummer gerade ist, da die Summe dann nur i ist.
Beachten Sie bei ungeradzahligen Zeilen, dass i = d * (i / d) + (i% d) = d * (Zeilennummer) + Spaltennummer. Daraus folgt, dass die Summe i + d-2 * (Spaltennummer) -1 d * (Zeilennummer) + Spaltennummer + d - 2 * (Spaltennummer) - 1 = d * (Zeilennummer + 1) - Spaltennummer ist - 1, die Zahl, die wir in die angegebene Zeile und Spalte einfügen möchten, um sicherzustellen, dass wir in den ungeradzahligen Zeilen rückwärts zählen.
Zurück zur Erklärung:
quelle
#
und `` weggelassen, damit eine kürzere Lösung keine Kommentare verwenden kann, um 59 Bytes zu erreichen? Wenn ja, gibt es keine Notwendigkeit, da es in dc so viele Möglichkeiten gibt, Befehle hinzuzufügen, die nichts ändern, zum Beispiel.q
Befehle am Ende des Skripts wiederholen .32P
es kürzer als[ ]n
ohnehin ist.Bash, Regex Länge 38, geknackt ( @kennytm )
Eingang:
Ausgabe:
quelle
PHP
Ich hoffe, dass es Spaß macht! : D
Ausgabe (n = 4)
Level 1: PCRE (Länge = 17) ( geknackt von Jörg Hülsermann )
{
so ... keine anonymen Funktionen!v
so ... neineval()
!;
so ... es muss eine einzelne Aussage sein!<
also ... keineHeredoc
oder mehrere PHP-Blöcke!@ JörgHülsermann hatte einen interessanten Ansatz, aber es ist nicht das, was ich im Sinn hatte :). Daher stelle ich einen neuen Schwierigkeitsgrad vor (ich verspreche, dass ich den Code habe, der dazu passt, und ich spiele nicht nur mit Ihnen):
Level 2: PCRE (Länge = 23) ( geknackt von Jörg Hülsermann )
_~|&A-Z
! :)Habe Spaß!
DIE ORIGINAL-LÖSUNG
Das Verbieten des
$
Zugriffs auf die Variablen bedeutet also nicht, dass sie überhaupt nicht verwendet werden können! Sie können weiterhinextract()/compact()
zum Importieren / Exportieren von Variablen in den aktuellen Bereich verwenden. :)Es gibt jedoch ein Problem:
compact('x')['x']++
würde nicht funktionieren, da Variablen in PHP als Wert übergeben werden ... mit einer Ausnahme! Objekte.Der Rest ist einfach.
0
und1
werden leicht erzeugt durch Umwandlungfalse
undtrue
zu ,int
indem sie mit dem Voranstellen+
Zeichenand
undor
seit&
und|
sind verboten@
v
kann mithilfe von generiert werdenchr(ord('u') + 1)
, was sich in der@chr(ord(u) + true)
Verwendung der oben genannten Problemumgehungen niederschlägtchr(ord('a') - 2)
was übersetzt zuchr(ord(a) - true - true)
callable
Typs erfolgen, der eine Zeichenfolge sein kann, die den Namen der Funktion enthält. Sie können also undefinierte Konstanten und einzelne Zeichenfolgen verketten, die von generiert wurdenord()
, um den Namen der Funktion zu erstellen, und folgendermaßen aufrufen:array_reverse()
wird(a.rray.chr(ord(a)-true-true).re.chr(ord(u)+true).erse)()
(array
ist ein Sprachkonstrukt, deshalb wird es in die undefinierten Konstantena
und aufgeteiltrray
).if ($n = $argv[1] and $i = 0) while ($n > $i++ and do_some and other_stuff or exit)
Die Logik in für Menschen lesbarem Code wäre:
Und die unfreundliche Version, die zum Regex passt:
<?php if (@extract([x=>(object)[s=>[],i=>+false]])and@define(n,compact(arg.chr(ord(u)+true))[arg.chr(ord(u)+true)][+true]?:+true)and@define(un,chr(ord(a)-true-true))and@define(s,(a.rray.un.chunk)(range(+true,pow(n,true+true)),n)))while((@compact(x)[x]->s[]=s[@compact(x)[x]->i++])and(@compact(x)[x]->s[]=(a.rray.un.re.chr(ord(u)+true).erse)(s[@compact(x)[x]->i++]))and(n>@compact(x)[x]->i)or(@die((json.un.encode)((a.rray.un.filter)(@compact(x)[x]->s)))))?>
quelle
V
. Habe Spaß! :)(array_re.chr(ord(u)+true).erse)()
! :) (... oder zumindest könntest du wenn das_
erlaubt war)Rubin [geknackt]
Erste Cops and Robbers Herausforderung. Hoffe, ich habe das nicht zu einfach gemacht.
EDIT: ersetzt
\g<1>
durch,(?1)
da sie in PCRE offensichtlich gleichwertig sind.Regex (PCRE)
Ausgabe (n = 4)
(Gibt ein Array von Arrays zurück. Es ist übrigens ein Lambda, aber vielleicht verrät das zu viel?)
quelle
JavaScript (geknackt)
Zum ersten Mal bei einer Cops and Robbers-Herausforderung, hoffentlich richtig.
Regex (JavaScript)
Ausgabe
Ein Array gleich:
quelle
$
am Ende des regulären Ausdrucks, wenn der Code selbst am Ende des regulären Ausdrucks endet. Ansonsten könnte ich zB machenx=>x.toString().toString().toString().toString()
und dann was ich will..*
am Anfang hätte es wirklich einfach gemacht. Es kann sich um ein beliebiges Programm handeln, dem ein Kommentar folgt. Grundsätzlich nicht.*
in Ihre Regex aufnehmen.Swift, Regex 25 (Gebrochen)
Richtig, mal sehen, ob ich den Dreh raus habe. Dies ist mein erster Bullen- und Räuberposten, also weiß ich, ob ich es vermasselt habe!
Regex
Ich habe Javascript auf regex101.com verwendet
Beispielausgabe
Ursprünglicher Code
quelle
n
als ob diese Übermittlung keine Eingabe erfordert, sondern eine fest codierte Variable . Wenn das stimmt, dann fürchte ich, ist dies laut Metakonsens nicht gültig.C - Regex mit 42 Zeichen Länge - geknackt
Javascript Regex wie in Regex101 verwendet .
Ich schätze, das wird trivial sein ...
Die Ausgabe wird
\n
nach jeder Zeile durch Tabulatoren getrennt.Meine Lösung, ganze Zahlen hier zum 0 - 2 über erhalten wurden
t-t
,t/t
undt
:quelle
r
in Ihrem regulären Ausdruck entfernen .Gelee , Länge 14 geknackt
von Dennis geknackt
Python-Regex.
Wurde
m
wieder hinzugefügt , nachdem ich es verrutschen ließ./
(schnell reduzieren);von
P
(Produkt) bis`
(Monade von Dyade schnell);m
(Modulo-Indizierung);v
(eval dyad);von
Ḋ
(dequeue) bisṫ
(tail); und€
(für jeden schnellen)Für eine Eingabe von
4
Minenausgaben:... weil ich eine Liste von Listen als Gitter mit formatiert habe
G
.quelle
Powershell, 23 Bytes
Von Matt geknackt
Ursprüngliche Lösung:
Nimmt Eingaben als Argument und gibt sie an stdout aus
Hoffentlich ist diese Regex in Ordnung, ich erwarte nicht, dass es zu schwierig ist, sie zu knacken, da ich nicht viel davon verschleiert habe, und die Regex gibt ein paar gute Ansatzpunkte, um die Lücken zu füllen, es gibt eine Sache im ersten Segment Das ist im Codegolf jedoch sehr ungewöhnlich, was vielleicht jemanden überraschen kann. Ich denke, dass ein nicht gieriges Match erforderlich ist, um dies ein bisschen härter zu machen.
Die ersten Polizisten fordern sowieso.
quelle
[Array]::Reverse()
anstelle von$array[9..0]
und$script:r
Variablen zu verwenden, die größtenteils unnötig sind.Röda 0.12 , Länge 19 (Gebrochen von @KritixiLithos)
PCRE:
Beispielausgabe (n = 4):
Originalcode:
Probieren Sie es online!
quelle
PHP 7 (sicher)
Ursprünglicher Code
Zweiter Versuch
Regex (PCRE): 29 Bytes
Kein Leerzeichen, keine Kommentare, keine Verwendung von base64_decode.
Viele Funktionen sind nicht erlaubt! unterstreichen
Ausgabe n = 11
Ausgabe n = 4
Ausgabe n = 3
quelle
MATL , Länge 12 (sicher)
Regex
Verwendet Python-Geschmack:
Beispielausgabe
Für
n=4
:Lösung
Betrachten Sie die Eingabe, um zu sehen, wie dies funktioniert
n=4
.quelle
Gelee , Länge 17 (sicher)
Python-Regex.
Wenn Sie den Knoten enger machen, werden einige weitere nützliche Dinge verboten. Für Ihre Hilfe sind hier die verbotenen Bytes:
knapp ein Drittel von ihnen!
Für eine Eingabe von
4
Minenausgaben:... weil ich eine Liste von Listen als Gitter mit formatiert habe
G
.Eine Lösung:
Probieren Sie es online! / regex101
Der wichtigste Trick ist hier , um die Index in eine lexikographisch sortiert Liste der Permutationen der natürlichen Zahlen bis zu n 2 (mit den
œ?
Aufbau der Liste der Länge zu vermeiden n 2 ! ), Und das Ergebnis in Stücke von Länge zu spalten n . Der oben genannte Index wird durch Bilden seiner Darstellung in dem faktoriellen Zahlensystem gefunden, das formelhaft ist, da die "ungeschnittene" Schlange durch Permutieren von Elementen auf vorgeschriebene Weise erzeugt wird (dies kann leicht in eine Zahl mit umgewandelt werdenÆ¡
).Die Lösung, die ich vorstelle, verwendet,
Ŀ
um frühere Links als Monaden zu referenzieren (Ersetzen vonÑ
undÇ
), aber mehrere$
in einer Reihe könnten stattdessen verwendet werden, um diese Hilfsfunktionen "inline" zu schalten. Es nutzt auchr
seitḶ
undR
sind verboten.quelle
Pip , Regex Länge 3 (sicher)
Die Lösung ist ein vollständiges Programm, das n als Befehlszeilenargument verwendet. Es werden keine Befehlszeilenflags verwendet.
Regex (jeder Geschmack)
Beispielausgabe
Meine Lösung
Probieren Sie es online!
Strategie
Hier ist der Code , den wir würden gerne schreiben:
Das ist:
a
iny
i
von 0 bisa-1
i
ungerade ist, kehre y um, addierei*a
zu jedem Element hinzu, verknüpfen Sie jedes Element mit einem Leerzeichen und drucken SieSchwierigkeiten
Viele Befehle und Variablen in Pip verwenden Buchstaben, einige wichtige jedoch nicht:
,
und\,
)+
,-
,*
,%
,++
):
){}
)Wie wir diese Einschränkungen umgehen:
EN
umerate kann anstelle von verwendet werden,
; Wir brauchen nur eine Zeichenkette mit der Anzahl der Zeichen, die wir wollen, und wir müssen das erste Element jeder Unterliste in einer Struktur wie der extrahieren[[0 "H"] [1 "i"]]
.F
oder Schleifen lösen können .y
Variable mit demY
ank-Operator zuweisen .X
ist Zeichenfolgenmultiplikation, undPU
sh (oderPB
"push-back") verkettet eine Zeichenfolge mit einer anderen vorhandenen Zeichenfolge. Um die Länge eines Strings zu ermitteln, können wir diesenEN
umerieren und die richtige Zahl aus der resultierenden Liste extrahieren._
.Besonderheiten
Die Bausteine unseres Programms:
Reichweite
Das ist
map-unpack(_, enumerate(repeat(space, a)))
im Pseudocode. Map-Unpack ist wie Pythonsitertools.starmap
: Wenn eine Liste von Listen angegeben ist, ruft es eine Funktion für die Elemente jeder Unterliste auf. Gibt das_
erste Argument zurück und_MU
ruft nur das erste Element jeder Unterliste ab. Zum Beispiel, wenn a = 3:... das ist das gleiche wie
,a
.Inklusivangebot
Ich bin mir nicht sicher, ob es eine Möglichkeit gibt,
inclusive-range(1, a)
einen einzelnen Ausdruck zu erstellen, aber zum Glück brauchen wir ihn nur einmal, damit wir ihny
in drei Schritten in der Variablen erstellen können.Im Pseudocode
yank(enumerate(repeat(space, a).push-back(space)))
:Als nächstes wird
POy
das erste Objekt aus demy
Ordner entfernt und verworfen[[1 " "] [2 " "] [3 " "]]
.Endlich,
Das heißt
yank(map-unpack(_, y))
: extrahiere das erste Element jeder Unterliste und ziehe die resultierende Liste zurück iny
.y
ist jetzt[1 2 3]
.Länge
Im Pseudocode
pop(dequeue(enumerate(a.push-back(space))))
. Die Schwierigkeit dabei ist, dass die Aufzählung nur Zahlen ergibtlen(a)-1
, die wir wollenlen(a)
. Also schieben wir zuerst ein Leerzeichen nacha
, verlängern es um ein Zeichen und nehmen dannlen-1
die neue Zeichenfolge.Mathematik
Nachdem wir nun die Möglichkeit haben, die Länge von Zeichenfolgen zu bestimmen, können wir Zeichenfolgen zum Multiplizieren und Addieren von Zahlen verwenden:
Der erste Befehl
sXaXb
erstellt eine Folge vona*b
Leerzeichen und nimmt dann die Länge davon an. Die zweite Methode bestehtsXaPBsXb
darin, eine Zeichenfolge vonb
Leerzeichen in eine Zeichenfolge vona
Leerzeichen zu verschieben und nimmt dann die Länge davon an.Das schöne daran ist , dass alle die Betreiber verwenden wir hier (
PU
,PO
,PB
,DQ
,EN
,X
) mit verwendet werden_
Ausdrücke Form Lambda. So können wir mathematische Transformationen auf den zuvor erstellten Inklusionsbereich abbilden.Wir müssen auch prüfen ,
i%2
innerhalb der Schleife, aber dies wird leicht erreicht mit bitweise AND:iBA1
.Setze sie zusammen
Der vollständige Code mit zusätzlichen Leerzeichen:
quelle
-S
?a*b
ist_V_VRVENCGaRLbPU1
,,a
ist_MUENZGa
,aJ" "
istaJ_VRVk
unda@i
ist so etwas_V_VRVaZCGi
, obwohl ich den Vorrang noch nicht ganz ohne Klammern ausarbeiten kann. Außerdem eine vage Vorstellung, dass ich die Permutationen eines Bereichs (wie oben erstellt, mit dem Äquivalent von,(a*a)
) abrufen und damit die richtige Permutation für jede Zeile auswählen kann.CJam, PCRE, Länge 8, geknackt
Beispielausgabe für 4:
quelle
CJam, PCRE, Länge 9, geknackt
Beispielausgabe für 4:
Jetzt
{|}
sind auch verboten.quelle
me
undmq
zur Annäherung an die Anzahl verwendete, so dass sie extrem lang (~ 20 KB) war.Mathematica, Regex-Länge 11, nicht konkurrierend , geknackt
PCRE-Geschmack:
Die richtige Lösung ist eine Funktion, die eine Ganzzahl annimmt und die Ausgabe als verschachtelte Liste zurückgibt:
quelle
Tinylisp , Regex Länge 3 ( rissig )
Sie können den tinylisp-Code unter Online testen !
Regex (jeder Geschmack)
Zeit für Hardcore.
Ausgabe
Die Lösung definiert eine Funktion , die ein einzelnes ganzzahliges Argument verwendet und eine Liste wie die folgende zurückgibt (für n = 4):
Mein ursprünglicher Code basiert auf der gleichen Grundidee wie Brian McCutchon, der Listen erstellt und auswertet. Hier steht es in einer Zeile:
Ich habe einmal die vollständige construct-and-eval-Methode verwendet, um ein Makro zu definieren
d'
, das Definitionen erstelltd
, deren Argumente jedoch in eine Liste eingeschlossen(d x 42)
sind(d'(x 42))
. Dann ging es nur noch darum, Listen in den Definitionen neu zu schreiben, die möglicherweise Leerzeichen benötigen:(q(a b))
->(c a(q(b)))
->(c(h(q(a)))(q(b)))
.quelle
Python3, Länge 162 (Cracked!)
Regex:
^([^"' #]){24}"(?1){11}i%n(?1){4}2\*n-(?1){4}i%n(?1){10}i\/n(\)\/\/1)(?1){5}(?2)(?1){3}2\*\(i%n\)(?1){4}[int()2\/]{16}for i in range\(j,(?1){4}\]\)(?1){6}\"\*n\)$
Okay, ich weiß, es ist ziemlich lang. Zum Glück wird es in weniger als einer Woche nicht geknackt ...: 'D.
Ich glaube, ich habe nirgendwo einen Fehler gemacht, der lückenhafte Antworten zuließ.
Ausgabeformat
Originalcode:
n=int(input());j=0;exec("print([int(i%n+1+(2*n-(2*(i%n)+1))*((((i/n)//1+1)/2)//1)+(2*(i%n)+1)*int(int(i/n)/2))for i in range(j,j+n)]);j+=n;"*n)
quelle