RoboCritters ( Etymologie ) ist eine brandneue esoterische Programmiersprache . Es ist eine Variante von Brainfuck (BF), die etwas komplexer ist als die üblichen Ersetzungsschemata für Bediener. Jedes Programm in RoboCritters ist ein rechteckiges Textraster, das nur die sieben Zeichen . []/\|
plus Zeilenumbrüche enthält, um das Raster zu formen.
Beispiel RoboCritters-Programm:
|\/||./|[]||
[..][][] |
|/\|[..][..]
[..] \/\/
Um ein RoboCritters-Programm in BF zu übersetzen, betrachten Sie jedes Nicht-Zeilenumbruch-Zeichen im Raster in der normalen Lesereihenfolge (von links nach rechts, dann von oben nach unten), z |\/||./|[]||[..][][] ||/\|[..][..][..] \/\/
.
Wenn der 4 × 2-Abschnitt des Gitters, der sich vom aktuellen Zeichen nach rechts und unten erstreckt, genau mit einem der acht unten aufgelisteten Robotertiere übereinstimmt, hängen Sie den entsprechenden BF-Befehl ( ><+-.,[]
) an das (anfangs leere) BF-Programm an.
Wenn der 4 × 2 Gitterabschnitt entspricht nicht einer der Roboter Lebewesen oder geht die Grenzen aus , nichts zu dem BF - Programm hinzugefügt.
Joybot,
>
Befehl:[..] \][/
Calmbot,
<
Befehl:[..] /][\
Squidbot,
+
Befehl:[..] //\\
Spiderbot,
-
Befehl:[..] ||||
Bunnybot,
.
Befehl:[][] [..]
Toothbot,
,
Befehl:[..] |/\|
Foxbot,
[
Befehl:|\/| [..]
Batbot,
]
Befehl:[..] \/\/
Lesen Sie also das Beispielprogramm
|\/||./|[]||
[..][][] |
|/\|[..][..]
[..] \/\/
wir können sehen, dass wir zuerst einem Foxbot (in Spalte 1, Zeile 1) begegnen, dann einem Toothbot (c1, r2), dann einem Bunnybot (c5, r2) und schließlich einem Batbot (c9, r3). Dies entspricht dem BF-Programm [,.]
.
Beachten Sie, dass sich Foxbot und Toothbot überlappen. Dies ist beabsichtigt; Robotertiere werden nicht anders interpretiert, wenn sie sich überlappen .
Herausforderung
Schreiben Sie das kürzestmögliche Programm, das ein RoboCritters-Programm aufnimmt und dessen BF-Äquivalent ausgibt. Sie müssen den BF nicht ausführen oder überprüfen, ob er gültig ist. Übersetzen Sie nur den RoboCritters-Code in BF-Code.
Einzelheiten
Alle eingegebenen RoboCritters-Programme sind gültig, dh es handelt sich um einen genau rechteckigen Textblock, der nur die sieben Zeichen
. []/\|
und die Zeilenumbrüche enthält, um ihn zu formen. Die Zeilenumbrüche können in einer beliebigen üblichen Darstellung sein . Sie können optional davon ausgehen, dass die Programme eine einzige nachgestellte Zeile haben.Sie müssen RoboCritters-Programme unterstützen, die kleiner als 4 × 2 sind, einschließlich des 0 × 0-Leerprogramms (oder Single Newline-Programms). Diese entsprechen alle dem leeren BF-Programm (der leeren Zeichenkette).
Das Ausgabe-BF-Programm sollte eine einzeilige Zeichenfolge sein, die nur die acht BF-Befehlszeichen enthält
><+-.,[]
. Optional kann eine einzelne nachgestellte Zeile eingefügt werden.Nehmen Sie die Eingabe wie gewohnt vor (stdin / Textdatei / Befehlszeile) und geben Sie sie an stdout oder die nächstgelegene Alternative Ihrer Sprache aus.
Anstelle eines Programms können Sie eine Funktion schreiben, die das RoboCritters-Programm als Zeichenfolge verwendet und die BF-Programmzeichenfolge ausgibt oder zurückgibt.
Beispiele
Eingabe: (Variante des obigen Beispiels)
|\/|[][] [..][][] |/\|[..] \/\/
Ausgabe:
[,.]
Eingabe: (testet alle Robotertiere)
[..][[[[[..]]. ]|\/| \][/[..]//\\[..][..] [..]/][\[][]|/\|[..] ||||/\| [..]| |\/\/
Ausgabe:
>+[<,-.]
Eingang:
[..] [..] [..] [..] [..] [..] [..] [..] |\/| [..] [..] [..] [..] [..] |\/| [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] |\/| [..] [..] [..] [..] [..] [..] [..] [][] [..] [..] [..] [..] [][] [..] [..] [..] [..] [..] [..] [..] [][] [][] [..] [..] [..] [][] [..] [..] [][] [..] [..] [][] [..] [][] [..] [..] [..] [][] [..] [..] [..] [..] [..] [..] [][] [..] [..] [..] [..] [..] [..] [..] [..] [][] [..] [..] [..] [][] [..] [..] [..] [][] //\\ //\\ //\\ //\\ //\\ //\\ //\\ //\\ [..] \][/ //\\ //\\ //\\ //\\ [..] \][/ //\\ //\\ \][/ //\\ //\\ //\\ \][/ //\\ //\\ //\\ \][/ //\\ /][\ /][\ /][\ /][\ |||| \/\/ \][/ //\\ \][/ //\\ \][/ |||| \][/ \][/ //\\ [..] /][\ \/\/ /][\ |||| \/\/ \][/ \][/ [..] \][/ |||| |||| |||| [..] //\\ //\\ //\\ //\\ //\\ //\\ //\\ [..] [..] //\\ //\\ //\\ [..] \][/ \][/ [..] /][\ |||| [..] /][\ [..] //\\ //\\ //\\ [..] |||| |||| |||| |||| |||| |||| [..] |||| |||| |||| |||| |||| |||| |||| |||| [..] \][/ \][/ //\\ [..] \][/ //\\ //\\ [..]
Ausgabe: ( BF Hello World-Programm )
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
Eingabe: (keine Roboterlebewesen vorhanden)
/\\\[]. ]..[..] \\//||\
Ausgabe: (leere Zeichenfolge)
Wertung
Die kürzeste Übermittlung in Bytes gewinnt. ( Handy-Byte-Zähler. ) Tiebreaker ist der am höchsten gewählte Beitrag.