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