====== Prolog ====== ====== Harmonogram ====== * 7.4.2010 - Základy Prologu (predikáty, fakta, pravidla, rekurze), zadání 1. domácího úkolu * 14.4.2010 - Práce se seznamy * 21.4.2010 - Mimologický predikát řez, zadání 2. domácího úkolu * 28.4.2010 - Prohledávání stavového prostoru, zadání 3. domácího úkolu, **odevzdání domácího úkolu 1** * 5.5.2010 - Test(45min), **odevzdání domácího úkolu 2**, Prohledávání stavového prostoru * 12.5.2010 - Rektorský den, **odevzdání domácího úkolu 3** (odevzdat do 14.5.2010) * 19.5.2010 - Dynamické klauzule, rozhraní Java <-> Prolog, Zápočet Domácí úkoly se odevzdávají mailem cvičícímu **před daným cvičením **. ====== Cvičení 1 ====== Seznámení s jazykem Prolog (fakta, predikáty, pravidla, dotazy; rekurze) a s prostředím Eclipse. Úkoly: - Podle rodokmenu na obrázku napište v Prologu fakta o rodině: rodic(X,Y), muz(X) a zena(X). Znak = označuje manžele a čára potomka.\\ {{courses:y33pui:prolog:rodina.png|}} - Pomocí výše uvedených faktů můžeme definovat pravidlo pro otce otec(X,Y):-muz(X), rodic(X,Y). Podobně nadefinujte pravidla pro matku, syna, dceru, dědu a babičku. - Zapište v Prologu následující orientovaný graf jako fakta. \\ {{courses:y33pui:prolog:graf.png|}} - Naprogramujte program pro ověření, zda mezi uzly X a Y existuje cesta. - Naprogramujte v Prologu výpočet faktoriálu. - Vyřešte v Prologu kryptogram JA+SE=MAM. ====== Zadání 1. úkolu z Prologu: rekurze ====== Zadání je {{courses:y33pui:prolog:pui2010ukol1.pdf|zde}}. Pro výpisy použijte predikáty //write//, //nl// (new line). ?-write('*'). ?-write('*'), nl, write('*'). ?-write(N). N je např. číslo nebo seznam.