Votre tâche consiste à écrire un morceau de code qui met à zéro la cellule actuelle dans la variante Brainfuck qui, chaque cellule peut contenir un entier signé de magnitude arbitrairement grande, au lieu du 0 à 255 normal.
Vous pouvez supposer qu'il y a 1 cellules à gauche et r cellules à droite de la cellule actuelle qui sont initialement nulles. Votre programme ne peut accéder qu'à ces cellules l + r +1. Une fois votre code terminé, il doit laisser les cellules supplémentaires l + r à zéro et le pointeur vers la cellule actuelle à la position d'origine.
Vous ne pouvez utiliser aucune entrée / sortie.
Le code avec le plus petit l + r gagne. S'il y a égalité, le code le plus court l'emporte. Il est recommandé d'indiquer également la complexité temporelle de votre programme pour référence, où n est la valeur absolue de l'entier d'origine dans la cellule actuelle.
Outils utiles
Vous pouvez tester un programme Brainfuck dans cette variante en utilisant cet interpréteur sur TIO par mbomb007 .
Vous pouvez également utiliser l'interpréteur dans cette réponse par boothby (d'autres réponses Python fonctionnent probablement aussi, mais je n'ai pas testé).
la source
Réponses:
l + r = 0 + 2 = 2,
555351 octetsl + r = 1 + 2 = 3,
4644 octetsMon propre algorithme. Le pointeur doit commencer au nombre qui doit être mis à zéro. La complexité temporelle est O (n ^ 2).
Comment ça marche:
n
.n+1
.n+1-2 = n-1
n-1+3 = n+2
.n+2-4 = n-2
.Nous répétons le processus, en augmentant l'incrémentation / décrémentation à chaque étape, jusqu'à ce que nous obtenions zéro.
la source
l + r = 0 + 2 = 2; 58 octets
La complexité est O (n ^ 2).
Ce qui suit est mon générateur de programme de test, vous pouvez donc voir que j'ai réellement essayé de le tester au cas où cela ne fonctionnerait pas ...
la source