# coding=utf-8 name = 'descendant/2' slug = 'the descendant relation' description = '''\

descendant(?X, ?Y): X je potomec (otrok, vnuk, …) od 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?

Potomec od nekoga, ki je otrok od Y, je tudi potomec od Y.

''', '''\

Če je nek Z starš od X in je ta Z hkrati potomec od Y, potem je tudi X potomec od Y.

''', '''\

Če je X potomec od Z, ki je otrok od Y, potem je X tudi potomec od Y.

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

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. potomec v enem koraku manj (en korak bližji potomec)...

''', 'grandparent_used_markup': '''\

Bi se dalo rešiti brez tega?

''', 'base_case': '''\

Si pomislil na robni pogoj? Kaj je najbolj enostaven par (potomec, prednik)?

''', # TODO: morda ta hint naredim z "more": najprej tekst, ob kliku pa še slika... (sicer je preveč očitno) '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!

''', # TODO: Tim, kako bi lahko še query poslali med parametri v Hint dict? Je to predvideno? Tukaj bi recimo pasalo... '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.

''', # TODO: trigger za interesting tidbit }