From 815063053ef46e3baad68564585c306fc559eaad Mon Sep 17 00:00:00 2001 From: Aleksander Sadikov Date: Mon, 29 Feb 2016 17:07:37 +0100 Subject: Some minor corrections in accompanying texts. --- prolog/problems/family_relations/cousin_2/common.py | 5 +++++ prolog/problems/family_relations/cousin_2/sl.py | 10 +++++++++- prolog/problems/family_relations/intro_sl.html | 4 ++-- 3 files changed, 16 insertions(+), 3 deletions(-) (limited to 'prolog/problems/family_relations') diff --git a/prolog/problems/family_relations/cousin_2/common.py b/prolog/problems/family_relations/cousin_2/common.py index c6d07c7..86ef5cc 100644 --- a/prolog/problems/family_relations/cousin_2/common.py +++ b/prolog/problems/family_relations/cousin_2/common.py @@ -40,6 +40,7 @@ hint_type = { 'cousin_vs_sibling': Hint('cousin_vs_sibling'), 'cousin_to_oneself': Hint('cousin_to_oneself'), 'cousin_need_not_be_parent': Hint('cousin_need_not_be_parent'), + 'predicate_always_false': Hint('predicate_always_false'), } test_cases = [ @@ -84,6 +85,10 @@ def hint(code, aux_code): return [{'id': 'gender_is_irrelevant_markup', 'start': m[0], 'end': m[1]} for m in marks] + \ [{'id': 'gender_is_irrelevant'}] + # target predicate seems to always be false + if not prolog.engine.ask_truth(engine_id, 'cousin(_, _)'): + return [{'id': 'predicate_always_false'}] + # precedence fail (AND block vs OR block) # case in point: parent(PX, X), parent(PY, Y), brother(PX, PY) ; sister(PX, PY) # or this case: parent(PX, X), parent(PY, Y), sister(PX, PY) ; brother(PX, PY) diff --git a/prolog/problems/family_relations/cousin_2/sl.py b/prolog/problems/family_relations/cousin_2/sl.py index 5b82305..c1380bf 100644 --- a/prolog/problems/family_relations/cousin_2/sl.py +++ b/prolog/problems/family_relations/cousin_2/sl.py @@ -40,7 +40,7 @@ hint = { 'precedence_fail': '''\

Si morda narobe upošteval prioriteto operatorjev IN ter ALI?

-

Operator IN veže močneje od ALI, če želiš spremeniti prioriteto, +

Operator IN veže močneje od ALI; če želiš spremeniti prioriteto, lahko uporabiš oklepaje.

''', @@ -58,6 +58,14 @@ Imata morda X in Y istega starša?

'cousin_need_not_be_parent': '''\

Bratranec/sestrična pravzaprav ne rabi imeti otrok...

+''', + + 'predicate_always_false': '''\ +

Vse kaže, da tvoj predikat vedno vrne "false". Si mu dal pravilno ime, si se morda pri imenu zatipkal?

+

Če je ime pravilno, se morda splača preveriti tudi, če se nisi zatipkal kje drugje, +je morda kakšna pika namesto vejice ali obratno, morda kakšna spremenljivka z malo začetnico?

+

Možno je seveda tudi, da so tvoji pogoji prestrogi ali celo nemogoči (kot bi bila npr. zahteva, +da je X hkrati starš in sestra od Y).

''', # 'interesting_tidbit': '''\ diff --git a/prolog/problems/family_relations/intro_sl.html b/prolog/problems/family_relations/intro_sl.html index 0e1147b..54d2e1e 100644 --- a/prolog/problems/family_relations/intro_sl.html +++ b/prolog/problems/family_relations/intro_sl.html @@ -143,7 +143,7 @@ so vsi argumenti lahko vhodi in izhodi hkrati. Nič ni strogo definirano. Temu bomo pogovorno rekli, da prolog deluje v vse (več) smeri. Vprašali smo seveda, kdo je starš od Williama.

-Privoščimo silahko še več. +Privoščimo si lahko še več.

 ?- parent(X, Y).
@@ -346,7 +346,7 @@ ancestor(X, Y) :-
     parent(X, Y)
     ;
     parent(X, Z),
-ancestor(Z, Y).
+    ancestor(Z, Y).
 

Uporabili smo podpičje, logični „ali“. Preberimo pravilo: če je -- cgit v1.2.1