Als ik in Prolog een functie wil maken die mij verteld of een getal uit een reeks het eerste getal is, dan heb ik bijvoorbeeld de volgende:
Maar stel dat ik nu een functie wil maken die het laatste element weergeeft van een (onbekende grootte) reekst elementen. Moet ik hier gebruik maken van recursie? Ik kom er nog niet echt uit. Wat ik wel weet is dat Prolog best wel interessant is... je kunt echt met 1 regel super veel!
Het volgende heb ik al geprobeerd:
De uitkomst:
code:
Door nu de functie aan te roepen met 'first(1,[1,2,3,4]).' krijg ik een Yes terug. Door aan te roepen met 'first(1,[2,3,4,5]).' krijg ik (zoals ik ook wil) een No terug.1
| first(X,[X|_]). |
Maar stel dat ik nu een functie wil maken die het laatste element weergeeft van een (onbekende grootte) reekst elementen. Moet ik hier gebruik maken van recursie? Ik kom er nog niet echt uit. Wat ik wel weet is dat Prolog best wel interessant is... je kunt echt met 1 regel super veel!
Het volgende heb ik al geprobeerd:
code:
1
2
3
4
5
6
| last(X, [X]).
leng(first(X, X),Y) :- Y=1.
leng([X|Tail],Y) :- leng(Tail,Y), Y=Y+1.
last(X, [Y|Tail]) :- last(X, Tail),
leng(Tail, Leng), Leng < 1,!,
write('last character: '), write(Y), fail. |
edit:
Hee laat maar, ik heb het al gevonden. Ik post het hier maar voor eventuele toekomstige Prolog-gebruikers
Hee laat maar, ik heb het al gevonden. Ik post het hier maar voor eventuele toekomstige Prolog-gebruikers
De uitkomst:
code:
1
2
3
4
| last(X, [X]).
last(X, [_ | Tail]):-
last(X, Tail).
%testen kan met: last(4,[1,2,3,4]). |
[ Voor 15% gewijzigd door Verwijderd op 28-01-2004 13:47 ]