Voici un programme Prolog simple pour montrer un problème que j'ai actuellement avec mon vrai code.Prolog - Ne pas retourner la valeur désirée
Je suis en train d'écrire un interprète Brainf * ck en Prolog, mais il ne retourne pas le droit Output
Je courais bf("+.", Output)
Rendement attendu - Output = [1]
rendement réel - Output = []
. Perte sa valeur lorsqu'il revient à iterateProg(Prog,Output)
en bf2
est la suivante:
bf2(Prog,Output):-
iterateProg(Prog,Output).
iterateProg([],_):- !.
iterateProg(Prog, Output):-
checkInstruction(Prog,Output, NewProg, NewOutput),
iterateProg(NewProg, NewOutput).
checkInstruction([Plus|ProgTail],Output,ProgTail,Output):-
char_code('+',Plus)
%increase memory by 1 for printing later.
.
checkInstruction([Period|ProgTail], Output, ProgTail, NewOutput):-
char_code('.',Period),
%take the value in memory from addition just now, we will assume it is 1
append(Output,[1],NewOutput).
Veuillez vérifier ma réponse. J'ai fait une erreur dans le commentaire. – nhahtdh