[Prolog] Division


Heinzi1991

Erfahrenes Mitglied
#1
Hallo liebe Community,

ich hab mal eine Frage:

Ich muss eine Division "div(A,B,E,R) mit Prolog schreiben und muss drei Prädikate einsetzen:
-times(A,B,P)
-add(A,B,S)
-gt(A,B)

times, add und gt sind schon definiert worden und funktionieren einwandfrei, aber wie setz ich diese drei jetzt richtig ein damit meine Division stimmt. Den eine Division kann man ja auch so schreiben:
A = B * E + R.

Bitte um Hilfe und vielen Dank schon im voraus.
 

Heinzi1991

Erfahrenes Mitglied
#3
also
add summiert die 2 zahlen
times multipliziert 2 zahlen
gt vergleicht ob die erste zahl größer ist als die zweite.

meine div schaut zurzeit so aus:
Code:
div(A,B,Q,R) :- times(Q,B,T), gt(A,T), add(T,R,A).
und wenn ich es im swi prolog so eingebe:
Code:
?- div(s(s(s(s(s(0))))),s(s(0)), Q,R).
kommen drei lösungen raus, und die dritte ist die richtige, also was genau mach ich falsch.
 

ikosaeder

Teekannen-Agnostiker
#6
Hi,
ich bin zufällig über diesen Thread gestolpert und wollte helfen, aber ich muss gestehen, ich verstehe nicht einmal die Frage. Kannst du bitte mal genau schreiben was du ausrechnen willst?
Für mich sieht das so aus, als wolltest du den Euklidischen Algorithmus implementieren:
http://de.wikipedia.org/wiki/Euklidischer_Algorithmus
Ist das richtig? Dann kommst du aber mit times und add nicht weiter.