Nous avons un convertisseur Brainf *** en TinyBF, mais pas l'inverse, alors en voici un.
Règles:
- Votre interprète doit prendre un programme TinyBF valide, sur une seule ligne, et il doit sortir le programme BrainF *** correspondant, sur une seule ligne, avec un espace de fin facultatif / nouvelle ligne. Aucun espace de tête n'est autorisé
- L'entrée peut contenir ou non des caractères qui ne sont pas l'un des quatre caractères TinyBF. Si c'est le cas, vous devez imprimer tous ces caractères aux mêmes endroits.
- Une réponse sera acceptée le 1er avril (sans plaisanter), basée sur des critères obscurs que j'utiliserai (jk;) j'accepterai le programme le plus court qui ne triche pas selon les règles suivantes)
- Pas de solution à 0 octet ou à 1 octet, car cela gâche le plaisir si vous créez (ou il existe) un langage de programmation juste à cette fin)
Cas de test
Entrée 1: +++++>+++++=>=|>>+=>>+|=>|>+=>+|
(calcule 5 (octet 1) + 5 (octet 2) = 10 (octet 3))
Sortie 1:+++++>+++++<[>>+<<-]>[>+<-]
Entrée 2: +++>++++Hi+++:P+=>=|>|>+>+=>>&&+|=>>|=>>=+!!>>=+|>>>+|
(Calcule 3 (octet 1) * 8 (octet 2) = 24 (octet 3)) Sortie 2:+++>++++Hi+++:P+<[>[>+>+<<&&-]>>[<<+!!>>-]<<<-]
==
est du cerveau.
.Réponses:
Python 2, 106 octets
Implémente la spécification TinyBF telle que trouvée ici . Essayez-le en ligne . Des améliorations ont été apportées en utilisant les techniques de la réponse de @ Dica . Nécessite une entrée de chaîne entre guillemets.
la source
r+=b.get(c,c+c)[a]*(c!='=')
. Vous pouvez également créer une boucle pour une ligne pour économiser 3 autres. Vous pouvez aligner le dict pour enregistrer 4 autres. Inlininginput()
est un autre 4.raw_input
ou basculer vers Python 3 et prendre la pénalité d'octet pourprint
. En ce moment je comprendsSyntaxError: invalid syntax
.Python 3, 97 octets
Ce script est basé sur la réponse de @ Mego
la source