mohi01
Grünschnabel
Hallo
Ich hab ein Problem, ich sollte einen Prolog-Interpreter für Prologprogramme schreiben, aber nur für logische Programme, also ohne Arithmetik und anderem Zeug. Die Argumente werden
so angegeben:
Ich hab mir schon einige Gedanken gemacht, aber hergebracht hab ich nur eine Skelettstruktur:
Das Problem ist ich sollte die Clauses mit der Query unifizieren, damit ich zu einer Lösung komme, ich hab aber keine Ahnung wie ich das machen soll, dazu reichen meine Prolog-Skills nicht aus.
Wenn sich jemand mit Prolog auskennt und mir helfen könnte, wäre ich sehr verbunden.
Ich hab ein Problem, ich sollte einen Prolog-Interpreter für Prologprogramme schreiben, aber nur für logische Programme, also ohne Arithmetik und anderem Zeug. Die Argumente werden
so angegeben:
Code:
interpret([[clause, clause],[clause, clause]],[[query],[query]])
z.B.:
interpret([ [nat(0)], [nat(s(X)), nat(X)] ], [nat(s(s(0))), nat(s(0))]).
heißt nichts anders als:
nat(0).
nat(s(X)) :- nat(X).
mit der Query
nat(s(s(0))), nat(s(0)).
Ich hab mir schon einige Gedanken gemacht, aber hergebracht hab ich nur eine Skelettstruktur:
Code:
interpret([], []).
interpret([X|Xs], [Y|Ys]):-
X, %hier sollte ich X mit Y unifizieren
Y,
interpret(Xs, Ys).
split([X|Xs], Z):- %zum splitten der er Liste von Listen der Klauseln.
Z = X,
split(Xs, Z).
Das Problem ist ich sollte die Clauses mit der Query unifizieren, damit ich zu einer Lösung komme, ich hab aber keine Ahnung wie ich das machen soll, dazu reichen meine Prolog-Skills nicht aus.
Wenn sich jemand mit Prolog auskennt und mir helfen könnte, wäre ich sehr verbunden.
Zuletzt bearbeitet: