min/3 — minimul a două elemente
Scrieți un predicat min/3 care să calculeze minimul a două elemente. Ce observați în implementare?
?- min(2, 5, M).
M = 2.
Hint: două clauze — una pentru
X =< Y, una altfel. Folosește!/0(cut) ca să blochezi backtracking-ul la prima clauză care se potrivește; altfel lamin(2, 5, M)vei primi două răspunsuri (M = 2șiM = 5, al doilea eronat).
Te-ai blocat?
editor
soluție
min(X, Y, X) :- X =< Y, !.
min(_, Y, Y).
?-
Tastează o interogare (ex. father_of(sandra, X).) și apasă Enter — sau apasă pe un caz de test de mai jos.
Cazuri de test (3 — apasă pe unul ca să îl rulezi, sau Verifică pentru toate)
?
min(2, 5, M).
așteptat: M = 2
?
min(7, 3, M).
așteptat: M = 3
?
min(4, 4, M).
așteptat: M = 4