Toon posts:

[PROLOG] Laatste element weergeven

Pagina: 1
Acties:

Verwijderd

Topicstarter
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:
code:
1
first(X,[X|_]).
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.

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 ;)

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 ]


  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

In ieder geval blij dat er nog meer prolog liefhebbers zijn :)