60 likes | 181 Views
Logické programování. Přednáška číslo 4. Seznamy. Seznam je uspořádaná sekvence elementů libovolné délky Seznam se zapisuje v hranatých závorkách Příklady: [ alena , klara , lucie , zuzana ] [ plzen , sparta , slavie , hradec_kralove , brno ] [ liberec , pardubice , 3, 2]
E N D
Logické programování Přednáška číslo 4
Seznamy • Seznam je uspořádaná sekvence elementů libovolné délky • Seznam se zapisuje v hranatých závorkách • Příklady: [alena, klara, lucie, zuzana] [plzen, sparta, slavie, hradec_kralove, brno] [liberec, pardubice, 3, 2] [jirka, odjel, [na, brigadu, do, rakouskych, alp]] [] % prázdný seznam
Seznamy • Hlavou seznamu je jeho první prvek • Tělem seznamu je seznam, který zbyde z původního seznamu po oddělení hlavy • Příklady: [a, b, c] Hlava: a Tělo: [b, c] [a, [b, c]] Hlava: a Tělo: [[b, c]]
Seznamy • Příklady: [[a+b], X-Y] Hlava: [a+b] Tělo: [X-Y] [] Hlava: neexistuje Tělo: neexistuje • Prázdný seznam nemá ani hlavu ani tělo! • Pro oddělení hlavy od těla se používá zápis [H|T] • ?-Sez=[tom, petr, jirka], Sez=[H|T]. Sez=[tom, petr, jirka], H=tom, T=[petr, jirka] yes
Jednoduché programy • První prvek seznamu : % prvni(Seznam, Prvek) % prvni(Sez,X) :- Sez = [H|T], X = H. %prvni([H|T],X) :- X = H. prvni([H|_], H). ?-prvni([tom, petr, jirka], X). X=tom yes
Jednoduché programy • Poslední prvek seznamu % posledni(Seznam, Prvek) posledni([H|[]], H). posledni([_|T],X) :- posledni(T,X). ?-posledni([tom, petr, jirka], X). X=jirka yes