Überlappende Polyglots


37

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, 1und 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 :

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


2
Eröffnete einen Chatroom für Diskussionen über mögliche Risse und das Bauen von Polyglots.
Bubbler

1
Kann die Antwort andere Dinge als die gewünschte Zahl ausgeben?
NieDzejkob

1
@NieDzejkob Nein, das Programm sollte nur die Nummer ausgeben, und ja, ich würde es vorziehen, wenn die Programme in weniger als einer Minute liefen.
Esolanging Fruit

3
Hier ist eine SEDE-Abfrage , die berechnet, wie lange die Antworten sicher waren (in Stunden).
NieDzejkob

1
@EmbodimentofIgnorance Ja, Sie können Befehlszeilenflags benötigen, da diese im Wesentlichen separate Interpreter definieren, und ja, das Programm muss nur die Nummer drucken. Das Programm kann nach STDERR ausgeben, aber nur die Ausgabe nach STDOUT ist relevant.
Esolanging Fruit

Antworten:


11

Hexagony, Klein (101) und ???

  xx={puts/}
gets87!@xx=p

main\

>9.*5,6v

Dies druckt 7in Hexagony , 8in Klein (101) und 9in ???.

Das 9funktioniert 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

  1. "Das 9funktioniert 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).
  2. Die Sprache ist auf TIO.
  3. Mit den ersten beiden Leerzeichen springt das Programm in die letzte Zeile. (Es ist keine 2D-Sprache.)
  4. Es gibt keinen expliziten Ausgabebefehl und der vBefehl beendet das Programm.

Erklärung ( rissige Post )

Im Quellcode

abcd={} -- a gaffe avoiding tactic in C++/C#
abcd[!1]=   1+2+3+4+5+6+7+8+9+10+11+12+13+17!
print(abcd[0>1+2+3 and 4+8+6<0-0]//35)
if 0>1 then a.next=';' en\
                    >1+6.@.@

Die relevanten Anweisungen in Klein (101) sind:

IP->.....................^...........IP->/
.........................|...................
.........................8
.........................\<-.............IP<-
                         @

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.



9

Befunge-96, Hexagony und ???

abcd={} -- a gaffe avoiding tactic in C++/C#
abcd[!1]=   1+2+3+4+5+6+7+8+9+10+11+12+13+17!
print(abcd[0>1+2+3 and 4+8+6<0-0]//35)
if 0>1 then a.next=';' en\
                    >1+6.@.@

Dies druckt 6in Befunge-96 , 7in Sechseck und 8in ???.

Erläuterung

Der Hexagony-Code lautet, wenn "prettifiziert":

       a b c d = { } - 
      - a g a f f e a v 
     o i d i n g t a c t 
    i c i n C + + a b c d 
   [ f a l s e ] = 1 + 2 + 
  3 + 4 + 5 + 6 + 7 + 8 + 9 
 + 1 0 + 1 1 + 1 2 + 1 3 + 1 
7 ! p r i n t ( a b c d [ 0 > 
 1 + 2 + 3 a n d 4 + 5 + 6 < 
  0 - 0 ] / / 3 5 ) i f 0 > 
   1 t h e n a . n e x t = 
    ' ; ' e n d > 1 + 6 . 
     @ . . . . . . . . . 
      . . . . . . . . . 
       . . . . . . . . 

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 ist 0. Die Ausführung geht in Richtung Osten auf der mittleren Reihe , wo 7!Lasten 7in den aktuellen Speicherrand und Drucke als eine ganze Zahl ist. [Ändert den Befehlszeiger auf Nordost, beginnend bei 7. Nach 7+3Ausfü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.



8

Lua, Brainfuck, ???

abcd = {} - eine Gaffe, die Taktik in C ++ vermeidet
abcd [false] = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12 + 13 + 14
Drucken (abcd [0> 1 + 2 + 3 und 4 + 5 + 6 <0-0] // 35)
wenn 0> 1, dann a.next = ';' Ende

Druckt 3 in Lua, 4 in Brainfuck und 5 in ???.

Erklärung für rissige Post :

a = 1 + 2 + 3 + 3 + 4 + 5 + 6 + 7 + 8 + 9
b = 1 + 1 + 1
f = 3 - (- 1)
c = 7 + 9 + 13 + 11 + 12 + 3--1
g = a + b + c + 1 + 2 + 3 + 4 + 5
j = 9 + 7 + g + c + b + a + g + g + g + g + g + 1 + 2 + 3 + 4 + 1 + 1
h = 1 + 1 + 1 + 1 + 333 + 1 + 1 + 1 + 111 + 1 + 1 + 1 + 333 + 1 + 1 + 1 + 1 + 1.
print (f)
  • In Python 3 3--(-1)ist 2, also wird 2 print(f)ausgegeben (das andere Zeug ist nicht erforderlich)
  • In Lua ist --wieder ein Kommentar, also 3--(-1)nur 3, also print(f)druckt 3 (andere Sachen sind wieder unnötig)
  • In Brainfuck gibt es 57 Pluspunkte und 5 Minuspunkte, die die erste Zelle auf dem Band auf 52 setzen, und das Ausgabezeichen 52, .das 4 ist.

+1 und Cracked
Zacharý

8

Auslöser , JavaScript und ???

[ //aТ/\\ ][ //е"6
console.log(111-111+12)]
//!'!/-²6-²52

Druckt 11in Trigger , 12in JavaScript und 13in REDACTED.

Da dies nicht länger geknackt wurde als jede andere Antwort, hier einige Hinweise:

  • Falls Sie es nicht bemerkt haben, sind die Тund еin der ersten Zeile Multibyte-Zeichen.
  • [ //und \\ ][ //sind No-Ops.
  • Die zweite Zeile -²52ist ebenfalls toter Code.
  • Die Sprache hat keinen Terminierungsbegriff, ²6bildet also eine Endlosschleife.
  • Insbesondere bildet das zweite Byte der UTF-8-Codierung ²zusammen mit der 6eine Endlosschleife.
  • Die ausgegebene Nummer wird vom codiert /!'!/
  • Die Sprache ist nicht in Try It Online, Rosetta Code oder Esolangs verfügbar.
  • Die einzige verfügbare Ausgabeform ist ein Bildschirm mit 1 Bpp.
  • Das Seitenverhältnis des Bildschirms beträgt 2.
  • Während die Sprache ursprünglich nicht als Maschinencode gedacht war, existieren FPGA-Implementierungen.
  • Ziel der Sprache waren laut Wikipedia Videospiele.
  • Der einzige Weg, um auf den Bildschirm zuzugreifen, ist eine spezielle Anweisung, die Koordinaten in auswählbaren Registern und die Höhe als Sofortwert verwendet und eine 8 x n-Bitmap auf den Bildschirm xodiert. Um die Kollisionserkennung zu vereinfachen und das Löschen des Bildschirms zu ermöglichen, wird eines der Register gesetzt, wenn ein Pixel wieder ausgeschaltet wird.

Erläuterung

Nun, es hat einige Zeit gedauert, bis es geknackt war. Mal sehen, wie der Code aussieht:

0200 5b20    SE VB, V2   ; Skip the next instruction if VB = V2. Since all
0202 2f2f    CALL 0xF2F  ; registers start at 0, this call will be skipped. This
                         ; hides the bytecode from JavaScript.
0204 61d0    LD V1, 0xD0 ; A useless load. Necessary to use a UTF-8 continuation
0206 a22f    LD I, 0x22F ; byte as an instruction and load the address of
                         ; the sprite.
0208 5c5c    SE VC, V5   ; A red herring supposed to suggest symmetry is
                         ; important, as well as a totally intended eliminator
                         ; of inaccurate implementations. Most documentation
                         ; claims that the lowest nibble must be zero, but in
                         ; the original COSMAC VIP implementation it's
                         ; a don't-care.

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.

020A 205d    CALL 0x05D    ; Skipped.
020C 5b20    SE VB, V2     ; Same as with the very beginning. Red herring.
020E 2f2f    CALL 0xF2F
0210 d0b5    DRW V0, VB, 5 ; Draw the sprite pointed to by I. Since V0 and VB
                           ; haven't been written to yet, the sprite will be drawn
                           ; in the top-left corner of the screen. The height is
                           ; an immediate.
0212 2236    CALL 0x236    ; Jump over the JavaScript and Trigger code. It doesn't
                           ; matter that we never return.
0214-022E *never used*
022F 2f      DB %00101111  ; Sprite data.
0230 21      DB %00100001
0231 27      DB %00100111
0232 21      DB %00100001
0233 2f      DB %00101111
0234-0235 *never used*
0236 b236    JP V0, 0x236  ; Since V0 is still zero, this is an infinite loop.
0238-023C *never used*     ; Together with the previous two lines, it's the
                           ; -²6-²52. It's a red herring supposed to suggest
                           ; prefix, or Polish, notation.

Sagen Sie mir nicht, dass dies Maschinencode auf einem Prozessor ist.
SIGSTACKFAULT

1
@Blacksilver Ich gehe schon seit zwei Hinweisen davon aus - was würde sonst so aussehen, nicht auf Esolang zu sein, aber für Wikipedia immer noch bemerkenswert genug?
Ørjan Johansen

@Blacksilver OK.
NieDzejkob

@ngm sorry, aber nein
NieDzejkob

Ich glaube, nach den Regeln geknackt .
ngm

7

Python 2, Python 3, ???

a={1,2}
print(1+#a
--bool(1/2)
)

Dies druckt 1 in Python 2, 2 in Python 3 und 3 in ???.

Crack Erklärung (Cracked Post) :

#define print(A) main(){puts("0");}
print(1+bool(1/2))
  • 0: C: Die erste Zeile definiert ein funktionsähnliches Makro print, das sein einzelnes Argument ignoriert und zu main(){puts("0");}einem vollständigen Programm ausgewertet wird , das gedruckt 0und beendet wird. Der gesamte Ausdruck 1+bool(1/2)wird ignoriert, wenn das print( )Makro in der zweiten Zeile auf erweitert wird main(){puts("0");}.

  • 1: Python 2: Die erste Zeile ist ein Kommentar. 1/2verwendet in Python 2 eine Ganzzahldivision, die 0 ergibt. Dieser Wert wird dann als Boolescher Wert ( bool(0)-> False) interpretiert und dann zu 1( 1+False-> 1) hinzugefügt und dann gedruckt.

  • 2: Python 3: Die erste Zeile ist ein Kommentar. 1/2verwendet die Float-Division in Python 3 und ergibt 0,5. Dieser Wert wird dann als Boolescher Wert ( bool(0.5)-> True) interpretiert und dann zu 1( 1+True-> 2) hinzugefügt und dann gedruckt.



7

JavaScript , CHIP-8 und ???

[ //aТ/\\ ][ //е"6
console.log(111-111+12)]
//!'!/-²6-²52@++++2345

12in JavaScript , 13in CHIP-8 und 14in ???

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):

[ 0x5b, 0x20, 0x2f, 0x2f, 0x61, 0xD0, 0xA2, 0x2f, 0x5c, 
0x5c, 0x20, 0x5d, 0x5b, 0x20, 0x2f, 0x2f, 0xD0, 0xB5, 
0x22, 0x36, 0x0a, 0x63, 0x6f, 0x6e, 0x73, 0x6f, 
0x6c, 0x65, 0x2e, 0x6c, 0x6f, 0x67, 0x28, 0x31, 
0x31, 0x31, 0x2d, 0x31, 0x31, 0x31, 0x2b, 0x31, 
0x32, 0x29, 0x5d, 0x0a, 0x2f, 0x2f, 0x21, 0x27, 
0x21, 0x2f, 0x2d, 0xb2, 0x36, 0x2d, 0xb2, 0x35, 0x32 ]

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 spriteBefehl, der die Nummer ausgibt, die richtige Menge an Müll hier und da und das Folgende:

: label-0
    0x2F
    0x21
    0x27
    0x21
    0x2F

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:

Bildbeschreibung hier eingeben

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.


Das werde ich zulassen . Ich werde heute in einer Erklärung nachbearbeiten. Gut gemacht.
NieDzejkob


Außerdem muss Ihr Hexadezimalwert falsch sein, da er nicht als gültiges UTF-8 dekodiert wird ...
NieDzejkob

5

C, Python 2, ???

#define print(A) main(){puts("0");}
print(1+bool(1/2))

Dies wird 0in C, 1in Python 2 und 2in ??? 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).


Rissig . Große Herausforderung übrigens!
Pizzapants184

5

Python 3, Lua, ???

a=1+2+3+3+4+5+6+7+8+9
b=1+1+1
f=3--(-1)
c=7+9+13+11+12+3--1
g=a+b+c+1+2+3+4+5
j=9+7+g+c+b+a+g+g+g+g+g+g+1+2+3+4+1+1
h=1+1+1+1+333+1+1+1+111+1+1+1+333+1+1+1+1+1.
print(f)

Druckt 2 in Python 3, 3 in Lua und 4 in ???.

Erklärung für rissige Post :

a={1,2}
print(1+#a
--bool(1/2)
)
  • In Lua ist - ein Kommentar. In Python 2 und 3 bedeutet - doppelt negatives arithmetisches Ergebnis.
  • In Python 2 und 3 ist # ein Kommentar. In Lua ist # der Längenoperator.
  • In Python 2 ist 1/2 eine Unterteilung, daher wird sie mit Null bewertet. In Python 3 ist dies nicht der Fall. Da beide Versionen von Python 0 zu False auswerten, wird bool (1/2) in Python 2 zu False und in Python 3 zu True ausgewertet. Bei Verwendung in der Arithmetik wird False in 0 und True in 1 umgewandelt.


5

> <>, Befunge-96 und ???

abcd={} -- a gaffe avoiding tactic in C++
abcd[false]=1+2+3+4+5+6+7+8+9+10+11+12+13+17!
print(abcd[0>1+2+3 and 4+5+6<0-0]//35)
if 0>1 then a.next=';' end
                    >1+6.@

Dies druckt 5 in><> , 6 inBefunge-96 und 7in ???.

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ür 6.



5

Kommentator , Beatnik , ???

// k... nak... naKaka pagpAbaGaBag
static answer: Option<&String> = None;
 
fn llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch(s: &String){
  answer = Some(s);
}
 
fn pneumonoultramicroscopicsilicovolcanoconiosis(){
  println!("{}", answer.unwrap());
}
 
fn main(){
  let s = String::from("17");
  let t = "Hi! I am a cat. AOOOWRRRWWW! Me need Whiskas! Noow! Mee hungry hast bekommen. Feedme! sudo !!. Sad... six cable hostage wire cable diediediediee #               */";
  llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch(&s);
  pneumonoultramicroscopicsilicovolcanoconiosis();
}

Gibt 15 in Commentator , 16 in Beatnik und 17 in der hoffentlich einen Sprache aus, die Sie finden sollen.

Okay, es ist Ahnung, Zeit:

  • Der Name der Sprache bezieht sich auf eine Verbindung von zwei Elementen, die beide Ihren Körper ausmachen, jedoch mit sehr unterschiedlichen Prozentsätzen (je nachdem, ob Sie ein Roboter sind oder nicht).
  • Die Sprache selbst ist in TIO, die Implementierung jedoch nicht.
  • Ach komm schon.

1
Sieht aus wie Rust ( 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, die fnals Funktionskennung verwendet wird.
Draco18s

Huh, sogar der Hinweis sieht aus wie Rust, eine Verbindung aus Fe und O. Mir fällt nichts anderes ein. Vielleicht verschiedene Compiler-Versionen?
Bubbler

1
Ich vermute, dies könnte Rust sein, der mit mrustc kompiliert wurde , also Rust ohne den Leihscheck .
Esolanging Fruit

@ EsolangingFruit versuchen Sie es
NieDzejkob

Drei Monate später erhielt ich schließlich um zu Knacken dieses
Esolanging Fruit

4

Brainfuck,> <> und ???

abcd={} -- a gaffe avoiding tactic in C++
abcd[false]=1+2+3+4+5+6+7+8+9+10+11+12+13+14
print(abcd[0>1+2+3 and 4+5+6<0-0]//35)
if 0>1 then a.next=';' end
                    >1+9*,@

Druckt 4in Brainfuck, 5in> <> und 6in ???

  • Im Brainfuck ändert sich nichts.
  • Leitet in> <> vden Programmfluss nach unten um. Das nist n umeric ausgegeben. ;beendet die Ausführung.



4

Beatnik , Rust , ???

fn avreg(){}
fn/*azxzzz avreg k zqyzzz ax quke    
>>P0 ++puts++puts[pov]
\@�{>*}++puts++puts++puts++puts++puts++puts++puts++puts%
*/main(){print!("17")}

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 rustcist. 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:

  • Die geheime Sprache ist zweidimensional.
  • Wie ich in den Kommentaren erwähnt habe, ist die Sprache nicht auf TIO.
  • Der 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.

1
Während Sprachen auf diese zufällig werfen (haben nicht gefunden viel Suche nach „ascii Codepoint 0x12 esolang“), bemerkte ich , dass es 15 tatsächlich gibt in> <>, das ist also ordentlich
Unrelated String

1
Es scheint, dass dies unter TIO keine 18 in einer Sprache ausgibt (mindestens ohne hinzugefügte Header-, Footer- oder Befehlszeilen-Flags). Ich hoffe, ich habe keine verpasst, da es wahrscheinlich etwas schwieriger sein wird, alles auf Esolangs, Wikipedia und Rosetta Code durchzusehen ... Ich vermute, dies ist eine Art 2D-Sprache, in der entweder @, P, {, oder mstartet einen Zeichenliteral und etwas später druckt seine Codepunkt in dezimal, aber das bedeutet nicht alle der erklären ++s ...
Unrelated String

1
@UnrelatedString Ja, ich werde bestätigen, dass es sich bei TIO nicht um eine Sprache handelt.
Esolanging Fruit

1
Nun, ich hätte vielleicht einen Tag damit verschwendet, 100 Sprachen auf esolang.org zu durchsuchen, um eine zu finden, die passt ... Dann las ich die ASCII-18-Zeichen-Sache und stellte fest, dass mein Ansatz völlig falsch war, als ich nach einer völlig anderen Klasse von Sprachen suchte ...
IQuick 143

2
@ IQuick143 Heringe sind rot
Esolanging Fruit


3

Somme , Trigger und ???

[,,E,D,,$,H,_,K,,$,,_,F,L]=!
[]+[]+!![]+[][111]
_=[111][F+L+E+E];[,J,,A,I,,B,C,S]=
[]+_;$=A+B+C+D+I+H+J+A+I+B+H
R=_[$](H+K+I+J+H+C+S+H+B+B+I)();G=($[$]+[])[14]
R[A+B+C+D+B+E+K][E+B+G](12);`
iP<`

Dies druckt 10in Somme , 11in Trigger und 12in ???.

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):

  • Einzelbyte (Bezeichnen A)
  • Zwei gleiche Bytes gefolgt von einem anderen Byte (bezeichnen AAB)
  • Drei gleiche Bytes (bezeichnet AAA)
  • Vier gleiche Bytes (bezeichnet AAAA)

Im Quellcode

!!8@e6v+4>9 \
1((111+111)/111)
00
~tz

Die signifikanten Token sind ((1 11+ 111 111, wo die ersten beiden nichts tun und die letzten beiden jeweils 1 ausgeben - also 11.



3

CHIP-8 , Klein (100) , ???

[ //aТ/\\ ][ //е"6
console.log(111-111+12)]
//!'!/-²6-²52@++++2345
 %/    <#> 13
       say 14
 + not not 15

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.

  • Das Entfernen der ersten Hälfte (der ersten drei Zeilen) des Programms funktioniert weiterhin.
  • Dies ist keine 2D-Sprache
  • Die Sprache ist auf TIO
  • Die nots und die saykönnen entfernt werden, ohne das Programm zu beeinträchtigen

Als Referenz sieht das Programm ohne dieses Zeug so aus:

 %/    <#> 13
        14
 +   15

Probieren Sie es online!


2
...Ich bin verängstigt. Dieser läuft in Runic und gibt 16 aus .
Draco18s

@ Draco18s Intentional
Jo King

Dies wird nach meinem nächsten Update nicht mehr der Fall sein, da ich mehreren Operatoren ein besseres String - Handling hinzugefügt habe (derzeit zeigt TIO a 1und 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 ...“
Draco18s

Definieren Sie Halbbytes, Zeichen, Zeilen oder etwas Bestimmtes?
NieDzejkob


3

Klein (100), Kommentator , ???

/@++++2345
start:
program:
 db 'function',10
 add program,program
 jp null+$8
 sbc rbp,rbp
 jnz program
 jr program
 add start
 halt
ex:

Ausgänge 14 in Klein (100) , 15 in Commentator , 16 in ???.

Ich bin ernsthaft schlecht darin, Polyglots zu verschleiern.

Erklärung ( Cracked Post )

 %/    <#> 13
        14
 +   15

In Commentator sind allgemeine Kommentartoken und Leerzeichen die wichtigen Befehle, und alle anderen Zeichen werden ignoriert.

  • Space erhöht die aktuelle Speicherzelle.
  • <# 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.


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.