diff options
Diffstat (limited to 'prolog/problems/family_relations/descendant_2/sl.py')
-rw-r--r-- | prolog/problems/family_relations/descendant_2/sl.py | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/prolog/problems/family_relations/descendant_2/sl.py b/prolog/problems/family_relations/descendant_2/sl.py new file mode 100644 index 0000000..fb60e76 --- /dev/null +++ b/prolog/problems/family_relations/descendant_2/sl.py @@ -0,0 +1,63 @@ +# coding=utf-8 + +id = 101 +name = 'descendant/2' +slug = 'the descendant relation' + +description = '''\ +<p><code>descendant(X, Y)</code>: <code>X</code> is a descendant (child, grandchild,...) of <code>Y</code>.</p> +<pre> + ?- descendant(patricia, X). + X = william ; + X = tina ; + X = thomas. +</pre>''' + +plan = ['''\ +<p>Brez rekurzije ne bo šlo... kako lahko problem prevedem na (en korak) manjši problem?</p> +<p><img src="Descendant-3.png" /></p> +<p>Loni naj zbriše imena relacij (parent, ancestor) s te slike!</p> +''', '''\ +<p><img src="Descendant-3.png" /></p> +''', '''\ +<p>Če je nek <code>Z</code> starš od <code>X</code> in je +ta <code>Z</code> hkrati potomec od <code>Y</code>, +potem je tudi <code>X</code> potomec od <code>Y</code>.</p> +'''] + +hint = { + 'gender_is_irrelevant': '''\ +<p>Je spol res pomemben?</p> +''', + + 'grandparent_used': '''\ +<p>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)...</p> +''', + + 'base_case': '''\ +<p>Si pomislil na robni pogoj? Kaj je najbolj enostaven par (potomec, prednik)?</p> +<p><img src="Descendant-1.png" /></p> +''', + + 'descendant_of_oneself': '''\ +<p>Kako je lahko nekdo potomec samega sebe?</p> +''', + + 'descendant_need_not_be_parent': '''\ +<p>Potomec <code>X</code> pravzaprav ne rabi imeti otrok...</p> +''', + + 'wrong_direction': '''\ +<p>Si morda sprogramiral ravno obratno in zamenjal prednika s potomcem? +<code>X</code> naj bo potomec od <code>Y</code> in ne obratno!</p> +''', + + 'interesting_tidbit': '''\ +<p>Zanimivost: nalogo bi lahko rešil tudi z uporabo rešitve za relacijo "ancestor". +Samo obrni spremenljivki <code>X</code> in <code>Y</code>; +če je <code>X</code> potomec od <code>Y</code>, potem je <code>Y</code> prednik od <code>X</code>.</p> +''', +} + |