Tous ces castors occupés faisaient un vrai gâchis. Ils ont écrit partout sur la bande. À ce rythme, notre voisin cessera de nous prêter des cassettes illimitées.
Nous avons besoin d'une nouvelle façon de jouer au jeu du castor, qui ne ruine pas chaque bande que nous utilisons.
Les règles
Brainfuck seulement. La bande mémoire est illimitée dans les deux sens. L'instruction d'entrée lira toujours , elle peut donc être utilisée pour effacer une valeur.
Limite source de 50 octets.
A la fin de l'exécution, la mémoire doit être à s.
Le score est la distance entre l'emplacement de départ du pointeur de mémoire et l'emplacement final - s'il faut instructions de déplacement pour les parcourir, votre score est n . Plus haut c'est mieux. Fournissez une valeur exacte si vous le pouvez, sinon fournissez une estimation.
Exemple
32 octets,
-[-[[>]+>+[<]>-[[>]<+<+[<]>-]]>]
Explication
- Initialize the list to [255].
[ ] Repeat as long as the list is not empty.
[- ] Decrement the left end. We need to shrink the numbers so it ends eventually.
[ [ ] ] Skip if 0 already.
[ [[>] ] ] Move to the cell past the right end.
[ [ + ] ] Make this cell 1.
[ [ > ] ] Go right again.
[ [ + ] ] Make this cell 1. We've now appended [1, 1].
[ [ [<]> ] ] Go back to the first nonzero cell on the left.
[ [ - ] ] And decrement it.
[ [ [ ]] ] We will need to transfer the rest of the number from the left to the right, so keep looping.
[ [ [[>]< ]] ] Go to the last nonzero cell on the right.
[ [ [ +<+ ]] ] Increment this and the one on the left. These are the cells we appended earlier. We transfer to them.
[ [ [ [<]> ]] ] Go back to the first nonzero cell on the left, which we are transferring from.
[ [ [ -]] ] Decrement here on the left to balance out the incrementing on the right.
[ >] We end the iteration on a now empty cell. Move right, the new left end is there.
Cet exemple est destiné à montrer certaines des techniques utilisées pour créer une soumission. Ce n'est pas compétitif pour sa taille.