summaryrefslogtreecommitdiff
path: root/prolog/problems/family_relations/descendant_2/sl.py
diff options
context:
space:
mode:
Diffstat (limited to 'prolog/problems/family_relations/descendant_2/sl.py')
-rw-r--r--prolog/problems/family_relations/descendant_2/sl.py63
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>
+''',
+}
+