Encore un autre problème d'analyse de Brainfuck, mais cette fois ... différent.
Vous travaillez dans Infinite Monkeys Incorporated, la société qui fabrique des programmes Brainfuck, pour résoudre divers problèmes intéressants (par accident, pas moins - après tout, la société crée des programmes aléatoires). Cependant, il semble que vos machines Turing rapides qui n'exécutent que Brainfuck ont un petit problème coûteux d'erreurs de syntaxe - faites-en un, et l'ordinateur explose. C'est probablement un défaut de conception, mais personne n'avait pris la peine de comprendre pourquoi cela se produisait.
Comme les machines Turing (en particulier les machines rapides) sont chères (après tout, elles ont une RAM infinie qui coûte), il serait préférable de s'assurer que le programme n'a pas d'erreurs de syntaxe avant d'exécuter le code. Votre entreprise va exécuter beaucoup de code, donc la vérification manuelle ne fonctionnera pas. Écrivez un programme qui lit le code STDIN for Brainfuck et se termine avec un état de sortie défini sur autre chose que 0 (erreur) si le programme a une erreur de syntaxe (par exemple,
]
est une erreur de syntaxe, car il n'y a pas de correspondance[
). Quittez avec le statut de sortie réglé sur 0 si le programme est tout à fait correct.Assurez-vous que votre programme remarque correctement les erreurs impliquant
[]
. Vous ne voudriez pas qu'un autre ordinateur explose, n'est-ce pas? Oh, et assurez-vous que c'est aussi court que possible - votre patron paie pour des programmes courts (parce qu'il pense qu'ils sont rapides, ou quelque chose). Oh, et vous n'avez pas à coder dans Brainfuck (en fait, vous ne pouvez pas, car Brainfuck ne prend pas en charge les codes de sortie) - votre code sera exécuté sur un ordinateur normal.
Donc, comme vous pouvez le voir, votre travail consiste à vérifier si le programme Brainfuck est "valide" (a des []
symboles associés ). Veuillez noter que les programmes Brainfuck peuvent avoir d'autres caractères que []
, alors ne refusez pas le programme simplement parce qu'il a d'autres commandes. Le plus petit code gagne, mais vous vous soucierez probablement plus des votes positifs de toute façon.
GCD(a,b)
place de 0 != a || b
.