Off: prolog

Fodor Zsolt fodor at gyakg.u-szeged.hu
2011. Sze. 21., Sze, 21:06:12 CEST


Üdv!

> Ha ezt valaki szövegesen leírná, azt nagyon megköszönném. :-)

Mivel eddig senki nem írt választ, felvállalom, hogy esetleg melléfogok...
Valaha írtam prologban programot, de annak már legalább 15 éve... 
(Egyébként jó játék, csak más irányú programozási tapasztalat jelentős
hátráltató tényező. :) )

> 
> /* 1.d MAXIMUM Ki a legmagasabb játékos és milyen magas? */

Ezek szabályok:
 
> maximum([jatekos(Nev,Max)],jatekos(Nev,Max)).
> maximum([jatekos(_,Mag)|List],jatekos(Nev,Max)) :-
> maximum(List,jatekos(Nev,Max)), Mag=<Max, !.
> maximum([jatekos(Nev,Max)|List], jatekos(Nev,Max)) :-
> maximum(List,jatekos(_,Mag)), Mag=<Max.

Ezek tények:
> jatekos(geza, 200).
> jatekos(lajos, 180).

----
// maximum ( lista , játékos ), a lista játékosokból áll. A szabály alapján a
listából a legnagyobb magasságú játékost választja ki.

maximum([jatekos(Nev,Max)],jatekos(Nev,Max)).

Ha egy játékosból áll a lista, akkor az a maximális.

maximum([jatekos(_,Mag)|List],jatekos(Nev,Max)) :-
maximum(List,jatekos(Nev,Max)), Mag=<Max, !.

A bal oldalon a lista első elemét leválsztjuk, ha annak a magassága...
A jobb oldalon álló maximum kifejezés a maradék listából meghatározza a
maximális magasságú játékost, ami persze akkor az eredeti lista maximuma, ha
az eredeti lista első játékosának magassága nem nagyobb, mint a maradék
listából a legnagyobb magasság. A ! jelet is meg kell magyarázni, azt hiszem,
hogy a rekurzív hívások lezárása miatt kell.

maximum([jatekos(Nev,Max)|List], jatekos(Nev,Max)) :-
maximum(List,jatekos(_,Mag)), Mag=<Max.

A lista első játékosa a maximum, ha a maradék lista legnagyobb magassága nem
nagyobb, mint az eredeti lista első játékosáé.

Üdv: Fodor Zsolt



További információk a(z) Techinfo levelezőlistáról