Ce défi est créé pour célébrer mon premier langage ésotérique, le revers !
Le revers est un langage unidimensionnel avec un flux de pointeur non linéaire. Le pointeur se déplace de trois étapes à la fois, exécutant uniquement toutes les trois instructions.
Le programme 1..1..+..O..@
ajoutera 1 + 1 et affichera 2 avant de se terminer. Les instructions intermédiaires sont ignorées, 1<>1()+{}O[]@
tout comme le même programme.
Lorsque le pointeur est sur le point de descendre de la fin de la bande, il inverse la direction et avance dans l'autre sens, tout 1.@1.O+.
comme le même programme. Notez qu'il ne compte l'instruction de fin qu'une seule fois. Cela nous permet de compresser la plupart des programmes linéaires, tels que1O+1@
Votre défi ici est d'écrire un programme ou une fonction qui prend une chaîne et de produire les instructions qui seraient exécutées si le programme était interprété comme Backhand (vous n'avez pas besoin de gérer de réelles instructions Backhand). Vous devez uniquement sortir jusqu'à ce que le pointeur atterrisse sur le dernier caractère de la chaîne (auquel cas l'exécution devrait normalement revenir en arrière).
Mais attendez , ce n'est pas tout! Lorsque votre programme lui-même est interprété de cette manière, le code résultant doit afficher l'un des éléments suivants:
(Mostly) works
Turing complete
'Recreational'
(les guillemets peuvent être soit'
ou"
, mais pas les deux)Perfectly okay
Only a few bugs
Par exemple, si votre code source est code 2 backhand
, le programme ce cankb od2ahd
doit sortir l'une de ces phrases.
Cas de test:
"1 1 + O @" -> "11+O@"
"1O+1@" -> "11+O@"
"HoreWll dlo!" -> "Hello World!"
"abcdefghijklmnopqrstuvwxyz" -> "adgjmpsvyxurolifcbehknqtwz"
"0123456789" -> "0369" (not "0369630369")
"@" -> "@"
"io" -> "io" (Cat program in Backhand)
"!?O" -> "!?O" (Outputs random bits forever in Backhand)
"---!---!" -> "-!-----!"
Et un programme de référence écrit, bien sûr, Backhand ( cela pourrait être un peu bogué, d' accord, je pense que je l'ai corrigé).
Règles.
- Les échappatoires standard sont interdites
- L'entrée du premier programme ne contiendra que des caractères ASCII et des sauts de ligne imprimables (c'est-à-dire des octets
0x20
-0x7E
ainsi que 0x0A) - Vous pouvez choisir si votre deuxième programme est converti à partir de votre premier octet ou par des caractères UTF-8.
- Deuxième programme:
- La casse n'a pas d' importance, donc votre sortie pourrait l'être
pErFectLy OKay
si vous le souhaitez. - Toute quantité d'espaces de fin / de début (nouvelle ligne, tabulations, espaces) est également correcte.
- Le deuxième programme doit être la même langue que le premier, mais pas nécessairement le même format (programme / fonction)
- Je suis heureux d'inclure des suggestions de commentaires sur des phrases supplémentaires (tant qu'elles ne sont pas trop courtes)
- La casse n'a pas d' importance, donc votre sortie pourrait l'être
- Comme il s'agit de code-golf , votre objectif est d'obtenir la réponse la plus courte pour votre langue!
- Dans deux semaines, j'attribuerai une prime de 200 à la réponse de revers la plus courte.
"---!---!"
(ou toute chaîne où le dernier caractère apparaît plus d'une fois)