# coding=utf-8 name = 'ancestor/2' slug = 'X je prednik od Y' description = '''\
ancestor(X, Y)
: X
je prednik (oče, mama, dedek, ...) od Y
.
?- ancestor(patricia, X). X = john ; X = michael ; X = michelle.''' plan = ['''\
Sedaj pa bo potrebna rekurzija... kako lahko problem prevedem na (en korak) manjši problem?
Loni naj zbriše imena relacij (parent, ancestor) s te slike!
''', '''\ ''', '''\Č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?
''', '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)...
''', 'base_case': '''\Si pomislil na robni pogoj? Kaj je najbolj enostaven par (prednik, potomec)?
''', '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!
Zanimivost: nalogo bi lahko rešil tudi z uporabo rešitve za relacijo "sister".
# Teta je namreč sestra od starša od Y
.