Im Gegensatz zu vielen C & R-Herausforderungen ist hierfür kein separater Räuberposten erforderlich. Das Ziel der Räuber ist es, die vorherige Antwort zu knacken und dann eine neue als Polizist zu posten.
Als Antwortende schreiben Sie eine Reihe von Polyglots, die so aussehen (jede Spalte ist eine Sprache und jeder Eintrag ist die Ausgabe der Antwort in dieser Sprache):
Language: 1 2 3 4 5 6 7 8 ...
Answer 1: 0 1 2
Answer 2: 1 2 3
Answer 3: 2 3 4
Answer 4: 3 4 5
Answer 5: 4 5 6
Answer 6: 5 6 7
...
(Leerzeichen bedeuten, dass in diesem Fall kein Verhalten erforderlich ist).
Jede Antwort sollte in 3 Sprachen arbeiten und 3 verschiedene aufeinanderfolgende Zahlen gedruckt werden, die jeweils einen weiteren sind als die Zahlen , die durch die vorherige Antwort (die erste Antwort Drucke gedruckt 0
, 1
und 2
). Jede Antwort verwendet zwei Sprachen aus der vorherigen Einreichung und eine dritte neue Sprache. Der Antwortende sollte versuchen zu verschleiern, was diese dritte Sprache ist.
Um eine neue Antwort zu schreiben, sollten Sie:
- Knacken Sie die aktuellste Antwort, indem Sie die dritte Sprache ermitteln.
- Fügen Sie vorzugsweise eine Erklärung für Ihren Riss hinzu und teilen Sie dem Poster die Antwort mit. Sobald Ihr Beitrag geknackt wurde, sollten Sie vorzugsweise auch eine Erklärung hinzufügen.
- Schreiben Sie eine Mehrsprachigkeit, bestehend aus der zweiten und dritten Sprache dieser Antwort, zusammen mit einer anderen Sprache Ihrer Wahl. Zeigen Sie Ihre ersten beiden Sprachen an, zeigen Sie Ihre neue jedoch nicht an. Es wird das Ziel des nächsten Posts sein, diese Sprache (oder eine andere Sprache, in der sie funktioniert) zu finden. Sie sollten daher versuchen, sie zu verschleiern.
Spezifikationen
Die Kriterien für eine gültige Programmiersprache sind die gleichen wie beim Programmiersprachen-Quiz, Mark II - Cops :
- Es gibt einen englischen Wikipedia-Artikel , einen Esolangs-Artikel oder einen Rosetta-Code-Artikel zum Zeitpunkt der Veröffentlichung dieser Herausforderung oder sie sind bei Try It Online! . Wenn ein Dolmetscher auf einer dieser Seiten verlinkt ist, ist dieser Dolmetscher vollständig legal.
- Es muss unseren Regeln für eine Programmiersprache entsprechen .
- Es muss einen kostenlosen Dolmetscher haben (wie im Bier). Kostenlos bedeutet hier, dass jeder das Programm nutzen kann, ohne dafür bezahlen zu müssen.
Jede Antwort muss auf einem vernünftigen PC in weniger als einer Minute ausgeführt werden.
- Sie können Programmiersprachen wiederverwenden, es müssen jedoch mindestens zwei Antworten dazwischen sein (sodass eine einzelne Antwort eine Sprache nicht wiederverwenden kann).
- Das Knacken einer Einreichung besteht darin, eine Programmiersprache zu finden, die das richtige Ergebnis ausgibt, nicht nur das beabsichtigte. Wenn eine Einreichung in einer Sprache ausgeführt wird, die nicht als funktionierend deklariert oder befunden wurde, müssen keine Maßnahmen ergriffen werden.
- Sie dürfen nicht zweimal (oder öfter) hintereinander posten.
Gewinnkriterium
Die beste Antwort ist, welche Antwort die meiste Zeit in Anspruch nahm, um geknackt zu werden. Die Herausforderung wird niemals enden, daher ist es immer möglich, dass sich die gewinnende Antwort ändert.
quelle
Antworten:
Hexagony, Klein (101) und ???
Dies druckt
7
in Hexagony ,8
in Klein (101) und9
in ???.Das
9
funktioniert nicht, wenn eine neue Zeile am Ende des Codes hinzugefügt wird. Seien Sie vorsichtig, wenn Sie vor Ort testen.Edit: 20 Stunden live zu sein ist schon ein Rekord, also gebe ich ab sofort ein paar Hinweise. (Auch weil die fragliche Sprache IMO ist noch nicht bekannt.)
Hinweise
9
funktioniert nicht, wenn eine neue Zeile am Ende hinzugefügt wird" ist sehr wichtig , ebenso wie die ersten beiden Leerzeichen (die sowohl von Hexagony als auch von Klein ignoriert werden).v
Befehl beendet das Programm.Erklärung ( rissige Post )
Im Quellcode
Die relevanten Anweisungen in Klein (101) sind:
Klein ist eine fungelike 2D-Sprache, bei der das Überschreiten der Grenze des Codebereichs (der ein Quadrat ist) von der Klein-Topologie abhängt.
/
und\
sind Spiegel.Die IP beginnt in der oberen linken Ecke und zeigt nach rechts. Es trifft auf einen Spiegel in Richtung der oberen Grenze und betritt den Codebereich auf der rechten Seite erneut, wie oben gezeigt. Dann trifft es wieder auf den Spiegel, 8 wird gedrückt und hält dann (nach mehrmaligem Passieren der Grenze) an
@
. Dann wird der Inhalt des Stapels auf stdout gedruckt, was einfach 8 ist.quelle
Befunge-96, Hexagony und ???
Dies druckt
6
in Befunge-96 ,7
in Sechseck und8
in ???.Erläuterung
Der Hexagony-Code lautet, wenn "prettifiziert":
Der Weg der Hinrichtung beginnt oben links in Richtung Osten. Die oberste Reihe macht nicht viel.
-
Ändert die aktuelle Speicherflanke so, dass der Wert darin ist0
. Die Ausführung geht in Richtung Osten auf der mittleren Reihe , wo7!
Lasten7
in den aktuellen Speicherrand und Drucke als eine ganze Zahl ist.[
Ändert den Befehlszeiger auf Nordost, beginnend bei7
. Nach7+3
Ausführung dann erreicht ,[
die den Befehlszeiger auf North West ändert sich in der Ecke South East beginnen. Schließlich ist der Pfad,..@
wo@
das Programm beendet wird.quelle
Lua, Brainfuck, ???
Druckt 3 in Lua, 4 in Brainfuck und 5 in ???.
Erklärung für rissige Post :
3--(-1)
ist 2, also wird 2print(f)
ausgegeben (das andere Zeug ist nicht erforderlich)--
wieder ein Kommentar, also3--(-1)
nur 3, alsoprint(f)
druckt 3 (andere Sachen sind wieder unnötig).
das 4 ist.quelle
Auslöser , JavaScript und ???
Druckt
11
in Trigger ,12
in JavaScript und13
inREDACTED
.Da dies nicht länger geknackt wurde als jede andere Antwort, hier einige Hinweise:
Т
undе
in der ersten Zeile Multibyte-Zeichen.[ //
und\\ ][ //
sind No-Ops.-²52
ist ebenfalls toter Code.²6
bildet also eine Endlosschleife.²
zusammen mit der6
eine Endlosschleife./!'!/
Erläuterung
Nun, es hat einige Zeit gedauert, bis es geknackt war. Mal sehen, wie der Code aussieht:
Dies bedeutet, dass sich viele verfügbare Emulatoren zwar korrekt verhalten, die Implementierung nach den Regeln jedoch mit dem zweiten Satz der Wikipedia-Seite verknüpft ist . Natürlich kann es nicht direkt auf einem durchschnittlichen PC ausgeführt werden, aber ich habe festgestellt, dass der Emulator Emma 02 , der auf der COSMAC VIP-Seite verlinkt ist, am besten funktioniert.
quelle
Python 2, Python 3, ???
Dies druckt 1 in Python 2, 2 in Python 3 und 3 in ???.
Crack Erklärung (Cracked Post) :
0
: C: Die erste Zeile definiert ein funktionsähnliches Makroprint
, das sein einzelnes Argument ignoriert und zumain(){puts("0");}
einem vollständigen Programm ausgewertet wird , das gedruckt0
und beendet wird. Der gesamte Ausdruck1+bool(1/2)
wird ignoriert, wenn dasprint( )
Makro in der zweiten Zeile auf erweitert wirdmain(){puts("0");}
.1
: Python 2: Die erste Zeile ist ein Kommentar.1/2
verwendet in Python 2 eine Ganzzahldivision, die 0 ergibt. Dieser Wert wird dann als Boolescher Wert (bool(0)
->False
) interpretiert und dann zu1
(1+False
->1
) hinzugefügt und dann gedruckt.2
: Python 3: Die erste Zeile ist ein Kommentar.1/2
verwendet die Float-Division in Python 3 und ergibt 0,5. Dieser Wert wird dann als Boolescher Wert (bool(0.5)
->True
) interpretiert und dann zu1
(1+True
->2
) hinzugefügt und dann gedruckt.quelle
JavaScript , CHIP-8 und ???
12
in JavaScript ,13
in CHIP-8 und14
in ???Ich werde auf ein Glied gehen und dieses als geknackt bezeichnen, obwohl ich es nicht ganz zum Laufen bringen kann. Ich bin mir der Sprache sicher (was anscheinend in den Regeln gefordert wird).
Hier ist eine unvollständige Erklärung des rissigen Pfostens
Der hexadezimale Code "is" (ich bin möglicherweise ein wenig abwesend):
Sie können hier klicken, "Binary Tools" und diese in das Byte-Array-Feld einfügen. Klicken Sie auf "Dekompilieren".
Die Schlüsselelemente des Codes sind: Anweisungen, um zu sagen, wo sich die "Nummer" befindet, der
sprite
Befehl, der die Nummer ausgibt, die richtige Menge an Müll hier und da und das Folgende:Um zu sehen, was dies darstellt, klicken Sie auf "Sprite Editor" und fügen Sie diese Hexadezimalzahlen in das Feld darunter ein. Du wirst die Antwort sehen:
Ich bin mir ziemlich sicher, dass Sie am Ende alles setzen können, was Sie möchten, und das CHIP-8-Ergebnis wird sich nicht ändern, daher der neue Eintrag.
Ich würde mich freuen, wenn jemand dies voll zum Laufen bringen könnte, anstatt den "Beweis" für die Antwort, die ich hier gegeben habe.
quelle
C, Python 2, ???
Dies wird
0
in C,1
in Python 2 und2
in ??? gedruckt .Dies wird für Leute, die Python kennen, extrem einfach zu knacken sein, aber ich wollte einen Ausgangspunkt für andere Antworten. Nachfolgende Antworten sollten versuchen, die dritte Sprache zu verschleiern (ich habe dies nicht getan).
quelle
Python 3, Lua, ???
Druckt 2 in Python 3, 3 in Lua und 4 in ???.
Erklärung für rissige Post :
quelle
> <>, Befunge-96 und ???
Dies druckt 5 in
><>
, 6 inBefunge-96
und7
in ???.Ich weiß, dass die beabsichtigte Lösung Befunge-93 war, aber ich konnte nicht widerstehen.
Erläuterung:
Befunge-96 folgt dem gleichen Pfad wie
><>
, ignoriert jedoch unbekannte Anweisungen und addiert eins zu 5 und multipliziert es mit 9, um 54 zu erhalten, den ASCII-Code für6
.quelle
Kommentator , Beatnik , ???
Gibt 15 in Commentator , 16 in Beatnik und 17 in der hoffentlich einen Sprache aus, die Sie finden sollen.
Okay, es ist Ahnung, Zeit:
quelle
fn main()
unter anderem), aber es nicht wirklich lief in Rust (explicit lifetime required in the type of 's'
), weder auf TIO noch einen anderen Dolmetscher gefunden. Und ich kann keine andere Sprache finden, diefn
als Funktionskennung verwendet wird.Brainfuck,> <> und ???
Druckt
4
in Brainfuck,5
in> <> und6
in ???v
den Programmfluss nach unten um. Dasn
ist n umeric ausgegeben.;
beendet die Ausführung.quelle
Klein (101), Z80Golf, ???
Drucke
8
in Klein (101) ,9
in Z80Golf und10
in ??? .quelle
Beatnik , Rust , ???
Dies druckt 16 in Beatnik, 17 in Rust und 18 in ???.
Das
�
Zeichen in Zeile 4 sollte durch das ASCII-Zeichen 18 ersetzt werden (dies wurde in den TIO-Links nicht durchgeführt, da es für keines von beiden relevant ist).Erklärung ( geknackt ):
Die Sprache der vorherigen Antwort war Rust: Rust wurde mit mrustc kompiliert . mrustc ist ein experimenteller Compiler, der hauptsächlich für das Bootstrapping einer gültigen Version von gedacht
rustc
ist. Er ignoriert daher die Überprüfung der Ausleihe und der Veränderbarkeit, sodass das Snippet von @ NieDzejkob fehlerfrei kompiliert werden kann.Dieses Programm funktioniert mit dem normalen Rust-Compiler, sodass Sie mrustc nicht installieren müssen, um es zu testen.
Hinweise
Da diese Antwort jetzt die längste ist, ohne geknackt zu werden, werde ich einen Hinweis hinterlassen und dies regelmäßig tun, bis sie geknackt ist:
�
Charakter ist ein roter Hering und hat nur eine sehr geringe Bedeutung. Die meisten Bytes können an ihrer Stelle ersetzt werden, und das Programm funktioniert weiterhin.quelle
@
,P
,{
, oderm
startet einen Zeichenliteral und etwas später druckt seine Codepunkt in dezimal, aber das bedeutet nicht alle der erklären++
s ...Z80Golf , Somme , ???
Dies druckt 9 in Z80Golf , 10 in Somme und 11 in ??? .
Dank an Bubbler für das Knacken des vorherigen Posts als Somme, der die Spaltensumme als Anweisung verwendet. Die ersten drei Spalten ergeben
Welches drückt 10, druckt es und beendet.
quelle
Somme , Trigger und ???
Dies druckt
10
in Somme ,11
in Trigger und12
in ???.Da die letzten beiden Sprachen leicht mehrsprachig sind, habe ich mich entschlossen, diese Sprache zu mischen .
Erklärung ( rissige Post )
Trigger sieht den gesamten Code als eine Reihe von Token (Tokenisierung ist gierig):
A
)AAB
)AAA
)AAAA
)Im Quellcode
Die signifikanten Token sind
((1
11+
111
111
, wo die ersten beiden nichts tun und die letzten beiden jeweils 1 ausgeben - also 11.quelle
CHIP-8 , Klein (100) , ???
Ausgänge 13 in CHIP-8 (nehme ich an), 14 in Klein und 15 in ???.
Eine andere Klein-Topologie, tsk tsk. Ich habe den Code vor dem beibehalten
@
, da ich nicht weiß, was CHIP-8 beeinflussen wird.Hinweise
Ich bin ein bisschen überfällig für diese, sorry. Ich werde versuchen, einen pro Tag hinzuzufügen.
not
s und diesay
können entfernt werden, ohne das Programm zu beeinträchtigenAls Referenz sieht das Programm ohne dieses Zeug so aus:
Probieren Sie es online!
quelle
1
und einen String an, der aus der ersten Zeile besteht und lautet "Dies ist kein Wert" und verwirft sie, das update wird concat ausführen, obwohl ich einen Operator dafür habe, aber concat verarbeitet sowohl Zeichen und Zahlen als auch Zeichenketten, wobei concat+
sie wie Zahlen behandelt . Aber es war sehr gruselig zu sein wie „Ich frage mich , was ... oh Gott, das nicht modifiziert werden könnte , und der nächste Eintrag sein ... wenn ich nur die ??? Sprache kenne ...“Klein (100), Kommentator , ???
Ausgänge 14 in Klein (100) , 15 in Commentator , 16 in ???.
Ich bin ernsthaft schlecht darin, Polyglots zu verschleiern.
Erklärung ( Cracked Post )
In Commentator sind allgemeine Kommentartoken und Leerzeichen die wichtigen Befehle, und alle anderen Zeichen werden ignoriert.
<#
führt XOR 1 in der aktuellen Speicherzelle aus.%
wird verwendet, um die aktuelle Speicherzelle auf Null zurückzusetzen.Warten Sie, es gibt 16 Leerzeichen nach
%
, was ist passiert?Es ist tatsächlich ein kleiner Fehler (oder eine Funktion?) Im Interpreter.
/
wird als Start eines 2-Zeichen-Befehls behandelt, sodass der Speicherplatz danach belegt wird. Ist/<space>
aber ein undefinierter Befehl (also ein No-Op), so wird der Raum effektiv übersprungen.quelle