Nimistu pikkuse arvutamiseks Eesti-Prologis olemas süsteemipredikaat
pikkus(Nimistu,Pikkus)(AMZI-Prologis
length(Nimistu,Pikkus), määratud
moodulis util.pro või util.plm)
Systeemipredikaat esineb(Element, Nimistu)
kontrollib, kas konstant Element
esineb nimistus Nimistu (AMZI-Prologis
member(Element, Nimistu))
Systeemipredikaat yhenda(Nimistu1, Nimistu2,
Nimistu) yhendab nimistud Nimistu1
ja Nimistu2 üheks nimistuks
Nimistu. (AMZI-Prologis on olemas
veidi erinev predikaat stringlist_concat(StringList,
String), mis liidab kõik nimistu StringList
elementidena olnud stringid stringiks String).
Arvnimistu elementide summa:
summa([],0):-
- !.
-- Tühja nimistu elementide summa on 0
summa([Esimene|Muud], S)):-
- summa(Muud, S1),
- S oleks S1 + Esimene.
Arvnimistu elementide aritmeetiline keskmine:
keskmine(Nimistu, Keskmine):-
- pikkus(Nimistu, P),
- summa(Nimistu, S),
- Keskmine oleks S/P.
Arvnimistu elementide seast suurima leidmiseks on kasulik kolmekohaline
süsteemipredikaat max(X, Y, Max) ,
mis annab kolmanda argumendi Max
väärtuseks kahe esimese argumendi seast suurema:
suurim([X], X):-
- !.
-- Üheelemendilise nimistu suurim element on see ainuke element!
suurim([Esimene| Muud], Max):-
- suurim(Muud, Max1),
- max(Max1, Esimene, Max).
- Arvnimistu minimaalne element (eelmisest veidi erineval viisil)
:
min([X], X):-
- !.
-- üheelemendilise nimistu ainuke element ongi minimaalne!
min([Esimene|Muud], Esimene)):-
- min(Muud, Min1),
- Esimene < Min1,
- !.
min([_|Muud], Min)):-
- min(Muud, Min),
--kui seda lauset peab kasutama, ei saa esimene element olla minimaalne,
seega tema väärtus pole enam oluline!
Tingimust Tingimus täitvate
elementide Term (Term
võib olla muutuja, lõplik nimistu jne) kogumiseks nimistusse
Nimistu on olemas Eesti-Prologi süsteemipredikaat
lahendid(Term, Tingimus, Nimistu)(LPA-Prologis:
findall(Term, Tingimus, Nimistu)).
Näiteks loengus 1 kirjeldati kreeka jumalate
poegi lausetega poeg_on(Isa, Poeg).
Poegade arvu võib arvutada järgmiselt:
poegi(Isa, Mitu):-
- lahendid(Poeg, poeg_on(Isa, Poeg), Pojad),
- pikkus(Pojad, Mitu).
Küsimused, probleemid: