# coding=utf-8 id = 101 name = 'descendant/2' slug = 'the descendant relation' description = '''\
descendant(X, Y)
: X
is a descendant (child, grandchild,...) of Y
.
?- descendant(patricia, X). X = william ; X = tina ; X = thomas.''' plan = ['''\
Brez rekurzije ne bo šlo... kako lahko problem prevedem na (en korak) manjši problem?
Loni naj zbriše imena relacij (parent, ancestor) s te slike!
''', '''\ ''', '''\Če je nek Z
starš od X
in je
ta Z
hkrati potomec od Y
,
potem je tudi X
potomec 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. potomec v enem koraku manj (en korak bližji potomec)...
''', 'base_case': '''\Si pomislil na robni pogoj? Kaj je najbolj enostaven par (potomec, prednik)?
''', 'descendant_of_oneself': '''\Kako je lahko nekdo potomec samega sebe?
''', 'descendant_need_not_be_parent': '''\Potomec X
pravzaprav ne rabi imeti otrok...
Si morda sprogramiral ravno obratno in zamenjal prednika s potomcem?
X
naj bo potomec od Y
in ne obratno!
Zanimivost: nalogo bi lahko rešil tudi z uporabo rešitve za relacijo "ancestor".
Samo obrni spremenljivki X
in Y
;
če je X
potomec od Y
, potem je Y
prednik od X
.