Votre défi est de minimiser le code Brainfuck , selon ces règles:
- Retirez tout ce qui n'en fait pas partie
+-><[].,
. - Pour tout groupe de caractères consécutifs
+
ou-
, si le nombre de+
s et de-
s est le même, supprimez-les. - Faites de même que ci-dessus, mais avec
>
et<
. - Supprimez les séquences des
+-><
personnages s'ils ne font rien. Par exemple, vous devez supprimer+>-<->+<
. (Cela peut être le plus délicat et le plus difficile à implémenter.) Assurez-vous que vous n'obtenez aucun faux positif, comme+>-<+>-<
, qui ne devrait pas être supprimé.
Cas de test:
Contribution
++++++[->++++++<]>. prints a $
[-]< resets tape
>,[>,]<[.<] reverses NUL terminated input string
++-->><< does nothing
Sortie
++++++[->++++++<]>.[-],[>,]<[.<]
Contribution
Should disappear: ++>>+<+++<->-->-<<->-<
Should disappear: +++>-<--->+<
Should stay: +++>-<+>---<
Sortie
+++>-<+>---<
Vous pouvez accepter l'entrée et la sortie comme vous le souhaitez - stdin / stdout, une fonction, etc., mais l'entrée peut ne pas être codée en dur.
C'est le code-golf , donc le code le plus court en nombre de caractères gagnera.
+++>-<+>---<
? Il peut être raccourci pour éviter un mouvement inutile du pointeur, mais la sortie attendue ne le modifie pas. Ma compréhension basée sur l'examen à la fois de la question et des réponses est que la poignée de porte est cool avec les spécifications prises de manière lâche; nous devons éliminer toutes les +-><
séquences contiguës sans opération comme indiqué explicitement, et au-delà, il est autorisé de faire une minification supplémentaire comme dans votre exemple ++>>++<<--
, et nous pouvons également effectuer des réarrangements tant qu'ils ne modifient pas la fonctionnalité du code, par exemple >+<+
en +>+<
.
+>-<->+<
. (Cela peut être le plus délicat et le plus difficile à implémenter.) Assurez-vous de ne pas obtenir de faux positifs, comme +>-<+>-<
, qui ne devraient pas être supprimés. " - c'est un peu vague
++>>++<<--
devrait sortir>>++<<
, et cela n'a pas été couvert. Veuillez ajouter d'autres cas de test.