summaryrefslogtreecommitdiff
path: root/prolog/problems/family_relations
diff options
context:
space:
mode:
Diffstat (limited to 'prolog/problems/family_relations')
-rw-r--r--prolog/problems/family_relations/ancestor_2/common.py14
-rw-r--r--prolog/problems/family_relations/ancestor_2/sl.py10
-rw-r--r--prolog/problems/family_relations/descendant_2/common.py14
-rw-r--r--prolog/problems/family_relations/descendant_2/sl.py8
4 files changed, 23 insertions, 23 deletions
diff --git a/prolog/problems/family_relations/ancestor_2/common.py b/prolog/problems/family_relations/ancestor_2/common.py
index 9346e5f..2353eab 100644
--- a/prolog/problems/family_relations/ancestor_2/common.py
+++ b/prolog/problems/family_relations/ancestor_2/common.py
@@ -84,6 +84,13 @@ def hint(code, aux_code):
return [{'id': 'grandparent_used_markup', 'start': m[0], 'end': m[1]} for m in marks] + \
[{'id': 'grandparent_used'}]
+ # descendant instead of ancestor (wrong direction)
+ # warning: knowledge base dependent
+ if prolog.engine.ask_truthTO(engine_id,
+ 'findall(_, ancestor(william, X), L1), length(L1, 2), \
+ findall(_, ancestor(X, william), L2), length(L2, 6)'):
+ return [{'id': 'wrong_direction'}]
+
# missing/failed base case
if prolog.engine.ask_truthTO(engine_id,
'findall(X/Y, parent(X, Y), L), member(X/Y, L), \+ ancestor(X, Y)'):
@@ -103,13 +110,6 @@ def hint(code, aux_code):
else:
return [{'id': 'ancestor_to_oneself'}]
- # descendant instead of ancestor (wrong direction)
- # warning: knowledge base dependent
- if prolog.engine.ask_truthTO(engine_id,
- 'findall(_, ancestor(william, X), L1), length(L1, 2), \
- findall(_, ancestor(X, william), L2), length(L2, 6)'):
- return [{'id': 'wrong_direction'}]
-
# Y does not necessarily need to be a parent
if prolog.engine.ask_one(engine_id,
'ancestor(_, Y), \+ parent(Y, _)') == 'false':
diff --git a/prolog/problems/family_relations/ancestor_2/sl.py b/prolog/problems/family_relations/ancestor_2/sl.py
index 5cb8044..974bde3 100644
--- a/prolog/problems/family_relations/ancestor_2/sl.py
+++ b/prolog/problems/family_relations/ancestor_2/sl.py
@@ -53,13 +53,13 @@ Kaj je najbolj enostaven par (prednik, potomec)?</p>
''', # TODO: morda ta hint naredim z "more": najprej tekst, ob kliku pa še slika... (sicer je preveč očitno)
'ancestor_to_oneself': '''\
-<p>Kako je lahko nekdo potomec samega sebe? Premisli, morda se ti splača tudi grafično skicirati
-tvojo trenutno rešitev.</p>
+<p>Kako je lahko nekdo potomec samega sebe? Iz trenutne verzije rešitve se da izpeljati tudi to.
+Premisli, morda se ti splača tudi grafično skicirati tvojo trenutno rešitev.</p>
''',
'ancestor_to_oneself_with_or': '''\
-<p>Kako je lahko nekdo potomec samega sebe? Premisli, morda se ti splača tudi grafično skicirati
-tvojo trenutno rešitev.</p>
+<p>Kako je lahko nekdo potomec samega sebe? Iz trenutne verzije rešitve se da izpeljati tudi to.
+Premisli, morda se ti splača tudi grafično skicirati tvojo trenutno rešitev.</p>
<p>Morda se ti splača preveriti tudi uporabo podpičja. To praktično naredi dva ločena stavka oz. veji
(eno ali drugo velja, morda tudi oboje). Vendar pazi, ker sta ti dve veji med seboj neodvisni
-- vrednosti iz ene se ne prenašajo v drugo vejo.</p>
@@ -67,7 +67,7 @@ tvojo trenutno rešitev.</p>
'only_two_levels_deep': '''\
<p>Tvoja rešitev je premalo splošna. Prednik je lahko tudi bolj oddaljen kot so stari starši,
-npr. prababica ali prapradedek.</p>
+npr. prababica ali prapradedek sta tudi prednika.</p>
''',
'descendant_need_not_be_parent': '''\
diff --git a/prolog/problems/family_relations/descendant_2/common.py b/prolog/problems/family_relations/descendant_2/common.py
index 70936da..b4d8f31 100644
--- a/prolog/problems/family_relations/descendant_2/common.py
+++ b/prolog/problems/family_relations/descendant_2/common.py
@@ -88,6 +88,13 @@ def hint(code, aux_code):
return [{'id': 'grandparent_used_markup', 'start': m[0], 'end': m[1]} for m in marks] + \
[{'id': 'grandparent_used'}]
+ # ancestor instead of descendant (wrong direction)
+ # warning: knowledge base dependent
+ if prolog.engine.ask_truthTO(engine_id,
+ 'findall(_, descendant(william, X), L1), length(L1, 6), \
+ findall(_, descendant(X, william), L2), length(L2, 2)'):
+ return [{'id': 'wrong_direction'}]
+
# missing/failed base case
if prolog.engine.ask_truthTO(engine_id,
'parent(Y, X), \+ descendant(X, Y)'):
@@ -100,13 +107,6 @@ def hint(code, aux_code):
else:
return [{'id': 'descendant_of_oneself'}]
- # ancestor instead of descendant (wrong direction)
- # warning: knowledge base dependent
- if prolog.engine.ask_truthTO(engine_id,
- 'findall(_, descendant(william, X), L1), length(L1, 6), \
- findall(_, descendant(X, william), L2), length(L2, 2)'):
- return [{'id': 'wrong_direction'}]
-
# X does not necessarily need to be a parent
if prolog.engine.ask_one(engine_id,
'descendant(X, _), \+ parent(X, _)') == 'false':
diff --git a/prolog/problems/family_relations/descendant_2/sl.py b/prolog/problems/family_relations/descendant_2/sl.py
index 2b638fd..9f1d818 100644
--- a/prolog/problems/family_relations/descendant_2/sl.py
+++ b/prolog/problems/family_relations/descendant_2/sl.py
@@ -54,13 +54,13 @@ Kaj je najbolj enostaven par (potomec, prednik)?</p>
''', # TODO: morda ta hint naredim z "more": najprej tekst, ob kliku pa še slika... (sicer je preveč očitno)
'descendant_of_oneself': '''\
-<p>Kako je lahko nekdo potomec samega sebe? Premisli, morda se ti splača tudi grafično skicirati
-tvojo trenutno rešitev.</p>
+<p>Kako je lahko nekdo potomec samega sebe? Iz trenutne verzije rešitve se da izpeljati tudi to.
+Premisli, morda se ti splača tudi grafično skicirati tvojo trenutno rešitev.</p>
''',
'descendant_of_oneself_with_or': '''\
-<p>Kako je lahko nekdo potomec samega sebe? Premisli, morda se ti splača tudi grafično skicirati
-tvojo trenutno rešitev.</p>
+<p>Kako je lahko nekdo potomec samega sebe? Iz trenutne verzije rešitve se da izpeljati tudi to.
+Premisli, morda se ti splača tudi grafično skicirati tvojo trenutno rešitev.</p>
<p>Morda se ti splača preveriti tudi uporabo podpičja. To praktično naredi dva ločena stavka oz. veji
(eno ali drugo velja, morda tudi oboje). Vendar pazi, ker sta ti dve veji med seboj neodvisni
-- vrednosti iz ene se ne prenašajo v drugo vejo.</p>