Ak máte akékoľvek otázky ohľadom tejto úlohy, napíšte Adamovi na
5.5.2018, 14:33 - “Ale Samko, veď ja nie som tvoj strýko, ja som tvoja teta.”
7.5.2018, 18:57 - Ozýva sa zlovestné zavŕzganie a prudký poryv prievanu zmietol Samuelovu prácu zo stola.
25.6.2018, 19:53 - “Samo, zajtra pôjdeme na návštevu”
Samuel nemá rád návštevy svojej rodiny. Nie preto, že by nemal členov svojej rodiny rád. Skutočný dôvod jeho nenávisti plynie z neschopnosti zapamätať si všetkých svojich príbuzných a spôsoby ako ich má oslovovať. Len nedávno prišiel na rozdiel medzi strýkom a tetou (a to za veľmi trápnych okolností). 5.5.2018, 14:34 preto spravil jedno veľmi dôležité rozhodnutie. Rozhodol sa nájsť spôsob, ktorý mu umožní predchádzať podobným omylom a tak si bude môcť naplno užiť rodinné oslavy.
Pustil sa preto hneď do práce. Jeho pamäť uchováva veľké množstvo nanajvýš dôležitých informácií (mená hrdinov z doty, texty popových pesničiek, ktorý deň ide po strede, 21 desatinných miest čísla \(\pi\)) a preto si je schopný pamätať iba to, kto v jeho rodine je koho rodič a aké má pohlavie. Tieto informácie si teda spísal na kartičky.
7.5.2018, 18:56 mal pred sebou v stromovej štruktúre krásne zoradené 4 generácie svojej rodiny. Na druhej strane domu jeho mama však práve otvorila balkónové dvere a celá jeho práca skončila na zemi. Keď upratal všetok ten bordel, rýchlo prepísal všetky záznamy do počítača. Tam mu ich totiž prievan určite nerozfúka.
Okoloidúca náhodná anomália však popridávala k Samovmu rodokmeňu ešte jeden rodokmeň, jeho dáta teda tvoria popisy dvoch takýchto stromov. Samuel si však z toho ťažkú hlavu nerobí, aspoň budú jeho výsledky zaujímavejšie a dozvie sa niečo aj o cudzích ľuďoch.
Úloha
Samo má zoznam rodinných vzťahy v podobe rodič(Rodic,Dieta)
. Každý takýto záznam znamená, že človek Rodic
je rodičom človeka Dieta
. Okrem toho o každom človeku vie aj to, či je muž (zapísané muž(Meno)
) alebo žena (žena(Meno)
). Všetky tieto záznamy tvoria dva nezávislé rodokmene.
Oba rodokmene sú navyše korektné, teda môžete predpokladať, že každý človek má najviac dvoch rodičov a rodokmene neobsahujú žiadne cykly. Šťastnou zhodou okolností majú všetci ľudia v Samových záznamoch iné krstné mená. Nemôže sa teda stať, že by v rodokmeňoch boli dvaja rôzni Petrovia.
Pred blížiacou sa návštevou potrebuje Samo zo záznamov zistiť nasledovné informácie. Pomôžte mu.
(1 bod) Je Ladislav Evin syn?
(2 bod) Kto je rodič Samuela?
(2 body) Koľko detí má Jozef?
(3 body) Koľko vnukov má Marta?
(3 body) Kto je manžel Lucie?
(4 body) Koľko sesterníc má Ema?
Ako riešiť túto úlohu
Samko všetky záznamy o svojej rodine vložil do interaktívneho prostredia SWISH
, kde ich môžete nájsť vy. Toto prostredie je dostupné online na tejto adrese: https://swish.swi-prolog.org/p/prudkyporyvprievanu.pl
Okrem toho, že v tomto prostredí sú uložené Samuelove záznamy, v tomto prostredí viete písať a spúšťať programy v jazyku Prolog
. Je to jednoduchý jazyk na spracovávanie logických výrokov, pomocou ktorého viete zistiť odpovede na uvedené otázky. Krátky tutoriál k tomuto jazyku obsahujúci všetko čo potrebujete vedieť k riešeniu úlohy nájdete tu: https://král.com/prolog
Odovzdávanie
K tejto úlohe odovzdávate popis vašeho riešenia. Okrem samotnej odpovede na otázku uveďte aj Prolog programy (takzvané dotazy), ktoré ste použili pri riešení, a popis toho, prečo ste tieto programy použili a odôvodnite správnosť vašeho postupu.
Za riešenie obsahujúce iba správne odpovede získate najviac polovicu bodov.
Odovzdávanie
Na odovzdávanie sa musíš prihlásiť
Otázky a diskusia
Po skončení kola budete mať príležitosť na diskutovanie o riešeniach v diskusii pod vzorovým riešením.