max/2 — elementul maxim
Scrieți un predicat max/2 care caută elementul maxim dintr-o listă de numere naturale.
?- max([4, 2, 6, 8, 1], Result).
Result = 8
Hint: calculează recursiv
maxpe coadă, apoi compară cuH. Două clauze cu condiții complementare (MaxTail >= HșiH >= MaxTail) — sau o singură clauză care unificăResultprinmax(H, MaxTail, Result).
Te-ai blocat?
editor
soluție
max([], 0) :- !.
max([H | T], MaxTail) :-
max(T, MaxTail),
MaxTail >= H, !.
max([H | T], H) :-
max(T, MaxTail),
H >= MaxTail.
?-
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)
?
max([4, 2, 6, 8, 1], Result).
așteptat: Result = 8
?
max([3], Result).
așteptat: Result = 3
?
max([5, 5, 5], Result).
așteptat: Result = 5