diff options
Diffstat (limited to 'prolog/problems/family_relations/father_2')
-rw-r--r-- | prolog/problems/family_relations/father_2/common.py | 7 | ||||
-rw-r--r-- | prolog/problems/family_relations/father_2/sl.py | 18 |
2 files changed, 18 insertions, 7 deletions
diff --git a/prolog/problems/family_relations/father_2/common.py b/prolog/problems/family_relations/father_2/common.py index cbfbcab..1643066 100644 --- a/prolog/problems/family_relations/father_2/common.py +++ b/prolog/problems/family_relations/father_2/common.py @@ -21,6 +21,7 @@ father(X, Y) :- hint_type = { 'or_instead_of_and': Hint('or_instead_of_and'), + 'or_instead_of_and_two_rules': Hint('or_instead_of_and_two_rules'), 'x_must_be_male': Hint('x_must_be_male'), 'x_must_be_parent': Hint('x_must_be_parent'), 'y_can_be_of_any_gender': Hint('y_can_be_of_any_gender'), @@ -80,6 +81,12 @@ def hint(program, solved_problems): 'findall(_, father(X, Y), L), length(L, 48)'): return [{'id': 'or_instead_of_and'}] + # OR instead of AND written with two rules, namely: + # (r1) father(X, Y):- male(X). (r2) father(X, Y):- parent(X, Y). + if prolog.engine.ask_truth(engine_id, + 'findall(_, father(X, Y), L), length(L, 48)'): + return [{'id': 'or_instead_of_and_two_rules'}] + # X must be male if prolog.engine.ask_truth(engine_id, 'female(X), father(X, _)'): return [{'id': 'x_must_be_male'}] diff --git a/prolog/problems/family_relations/father_2/sl.py b/prolog/problems/family_relations/father_2/sl.py index ee6893b..67bf764 100644 --- a/prolog/problems/family_relations/father_2/sl.py +++ b/prolog/problems/family_relations/father_2/sl.py @@ -17,13 +17,12 @@ description = '''\ plan = [ '''\ -<p><img src="Father-1.png" /></p> -<p>Loni naj zbriše imena relacij (parent, mother) s te slike!</p>''', +<p><img src="[%@resource Prolog_father_01.svg%]" alt="Oče ima otroka in je moškega spola." /></p>''', '''\ -<p><img src="Father-1.png" /></p>''', +<p><img src="[%@resource Prolog_father_02.svg%]" alt="Oče X je starš od Y in je moškega spola." /></p>''', '''\ -<p>Če je <code>X</code> ženska in je hkrati <code>X</code> starš od <code>Y</code>, -potem je <code>X</code> mama od <code>Y</code>.</p>''' +<p>Če je <code>X</code> moški in je hkrati <code>X</code> starš od <code>Y</code>, +potem je <code>X</code> oče od <code>Y</code>.</p>''' ] hint = { @@ -31,14 +30,19 @@ hint = { <p>Si morda uporabil podpičje (ki pomeni ALI) namesto vejice (ki pomeni IN)?</p> ''', + 'or_instead_of_and_two_rules': '''\ +<p>Si morda zapisal dve pravili, eno za spol in eno za "starševstvo"? +Pozor: velja eno ALI drugo, ne nujno eno IN drugo!</p> +''', + 'x_must_be_male': '''\ <p>Oče je navadno moškega spola.</p> -<p><img src="Father-2.png" /></p> +<p><img src="[%@resource Prolog_father_03.svg%]" /></p> ''', 'x_must_be_parent': '''\ <p>Oče naj bi imel vsaj enega otroka... torej je starš od nekoga.</p> -<p><img src="Father-3.png" /></p> +<p><img src="[%@resource Prolog_father_04.svg%]" /></p> ''', 'y_can_be_of_any_gender': '''\ |