# coding=utf-8 name = 'ancestor/2' slug = 'X je prednik od Y' description = '''\
ancestor(?X, ?Y)
: X
je prednik (oče, mama, babica,
pradedek, …) od Y
.
?- ancestor(patricia, Y). Y = john ; Y = michael ; Y = michelle.
Družinska drevesa so
podana s predikati parent/2
, male/1
in
female/1
.
Sedaj pa bo potrebna rekurzija... kako lahko problem prevedem na (en korak) manjši problem?
''', '''\Če je X
starš od nekega Z
in je
ta Z
prednik od Y
,
potem je X
tudi prednik od Y
.
Je spol res pomemben?
''', 'gender_is_irrelevant_markup': '''\Je to res potrebno?
''', 'grandparent_used': '''\Rešitev z "grandparent" bo premalo splošna, poskusi nadomestiti to z rekurzijo. Skratka, poskusi prevesti na "manjši" problem, npr. prednik v enem koraku manj (en korak bližji prednik)...
''', 'grandparent_used_markup': '''\Bi se dalo rešiti brez tega?
''', 'base_case': '''\Si pomislil na robni pogoj? Kaj je najbolj enostaven par (prednik, potomec)?
''', # TODO: morda ta hint naredim z "more": najprej tekst, ob kliku pa še slika... (sicer je preveč očitno) 'ancestor_to_oneself': '''\Kako je lahko nekdo prednik samemu sebi?
''', 'descendant_need_not_be_parent': '''\Potomec Y
pravzaprav ne rabi imeti otrok...
Si morda sprogramiral ravno obratno in zamenjal prednika s potomcem?
X
naj bo prednik od Y
in ne obratno!