# coding=utf-8 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.

'''] hint = { 'gender_is_irrelevant': '''\

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...

''', 'wrong_direction': '''\

Si morda sprogramiral ravno obratno in zamenjal prednika s potomcem? X naj bo potomec od Y in ne obratno!

''', 'interesting_tidbit': '''\

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.

''', }