RoboCritters ( étymologie ) est un tout nouveau langage de programmation ésotérique (ne vous embêtez pas à le chercher, je l'ai juste inventé). C'est une variante de Brainfuck (BF), légèrement plus complexe que les schémas de substitution d'opérateurs habituels. Chaque programme dans RoboCritters est une grille rectangulaire de texte qui ne contient que les sept caractères . []/\|
, plus des retours à la ligne pour façonner la grille.
Exemple de programme RoboCritters:
|\/||./|[]||
[..][][] |
|/\|[..][..]
[..] \/\/
Pour traduire un programme RoboCritters en BF, regardez chaque caractère non nouvelle ligne dans la grille dans l'ordre de lecture normal (de gauche à droite puis de haut en bas), par exemple |\/||./|[]||[..][][] ||/\|[..][..][..] \/\/
.
Si la section 4 × 2 de la grille s'étendant vers la droite et vers le bas à partir du caractère actuel correspond exactement à l'un des huit robots robots listés ci-dessous, ajoutez la commande BF correspondante ( ><+-.,[]
) au programme BF (initialement vide).
Si la section de grille 4 × 2 ne correspond à aucune des créatures du robot ou sort des limites , rien n'est ajouté au programme BF.
Joybot,
>
commande:[..] \][/
Calmbot,
<
commande:[..] /][\
Squidbot,
+
commande:[..] //\\
Spiderbot,
-
commande:[..] ||||
Bunnybot,
.
commande:[][] [..]
Toothbot,
,
commande:[..] |/\|
Foxbot,
[
commande:|\/| [..]
Batbot,
]
commande:[..] \/\/
Donc, en lisant l'exemple de programme
|\/||./|[]||
[..][][] |
|/\|[..][..]
[..] \/\/
nous pouvons voir que nous rencontrons d'abord un Foxbot (à la colonne 1, ligne 1), puis un Toothbot (c1, r2), puis un Bunnybot (c5, r2) et enfin un Batbot (c9, r3). Cela correspond au programme BF [,.]
.
Notez que le Foxbot et le Toothbot se chevauchent. C'est intentionnel; les créatures robotiques ne sont pas interprétées différemment lorsqu'elles se chevauchent .
Défi
Écrivez le programme le plus court possible qui accepte un programme RoboCritters et génère son équivalent BF. Vous n'avez pas besoin d'exécuter le BF ou de vérifier qu'il est valide, ne traduisez que le code RoboCritters en code BF.
Détails
Tous les programmes RoboCritters entrés seront valides, c'est-à-dire qu'ils seront un bloc de texte exactement rectangulaire ne contenant que les sept caractères
. []/\|
, plus des retours à la ligne pour le façonner. Les nouvelles lignes peuvent être dans n'importe quelle représentation commune pratique . Vous pouvez éventuellement supposer que les programmes ont une seule nouvelle ligne de fin.Vous devez prendre en charge les programmes RoboCritters d'une taille inférieure à 4 × 2, y compris le programme 0 × 0 vide (ou un saut de ligne unique). Ils correspondent tous au programme BF vide (la chaîne vide).
Le programme BF en sortie doit être une chaîne d'une ligne contenant uniquement les huit caractères de commande BF
><+-.,[]
. Il peut éventuellement y avoir une seule nouvelle ligne de fin.Prenez l'entrée de n'importe quelle manière habituelle (stdin / fichier texte / ligne de commande) et sortez vers stdout ou l'alternative la plus proche de votre langue.
Au lieu d'un programme, vous pouvez écrire une fonction qui prend le programme RoboCritters comme une chaîne et imprime ou renvoie la chaîne du programme BF.
Exemples
Entrée: (variante de l'exemple ci-dessus)
|\/|[][] [..][][] |/\|[..] \/\/
Production:
[,.]
Entrée: (teste toutes les créatures du robot)
[..][[[[[..]]. ]|\/| \][/[..]//\\[..][..] [..]/][\[][]|/\|[..] ||||/\| [..]| |\/\/
Production:
>+[<,-.]
Contribution:
[..] [..] [..] [..] [..] [..] [..] [..] |\/| [..] [..] [..] [..] [..] |\/| [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] [..] |\/| [..] [..] [..] [..] [..] [..] [..] [][] [..] [..] [..] [..] [][] [..] [..] [..] [..] [..] [..] [..] [][] [][] [..] [..] [..] [][] [..] [..] [][] [..] [..] [][] [..] [][] [..] [..] [..] [][] [..] [..] [..] [..] [..] [..] [][] [..] [..] [..] [..] [..] [..] [..] [..] [][] [..] [..] [..] [][] [..] [..] [..] [][] //\\ //\\ //\\ //\\ //\\ //\\ //\\ //\\ [..] \][/ //\\ //\\ //\\ //\\ [..] \][/ //\\ //\\ \][/ //\\ //\\ //\\ \][/ //\\ //\\ //\\ \][/ //\\ /][\ /][\ /][\ /][\ |||| \/\/ \][/ //\\ \][/ //\\ \][/ |||| \][/ \][/ //\\ [..] /][\ \/\/ /][\ |||| \/\/ \][/ \][/ [..] \][/ |||| |||| |||| [..] //\\ //\\ //\\ //\\ //\\ //\\ //\\ [..] [..] //\\ //\\ //\\ [..] \][/ \][/ [..] /][\ |||| [..] /][\ [..] //\\ //\\ //\\ [..] |||| |||| |||| |||| |||| |||| [..] |||| |||| |||| |||| |||| |||| |||| |||| [..] \][/ \][/ //\\ [..] \][/ //\\ //\\ [..]
Sortie: (programme BF Hello World )
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
Entrée: (aucun robot bestiole présent)
/\\\[]. ]..[..] \\//||\
Sortie: (chaîne vide)
Notation
La soumission la plus courte en octets l'emporte. ( Compteur d'octets pratique. ) Tiebreaker est le poste le plus voté.