From d4e24f31ab51640c2e65eb68446f0d5f6174b7e1 Mon Sep 17 00:00:00 2001 From: Aleksander Sadikov Date: Wed, 2 Mar 2016 15:24:00 +0100 Subject: Improved hints for ancestor/2 and descendant/2. --- prolog/problems/family_relations/descendant_2/common.py | 5 +++++ prolog/problems/family_relations/descendant_2/sl.py | 8 ++++++++ 2 files changed, 13 insertions(+) (limited to 'prolog/problems/family_relations/descendant_2') diff --git a/prolog/problems/family_relations/descendant_2/common.py b/prolog/problems/family_relations/descendant_2/common.py index b4d8f31..6cfe1cd 100644 --- a/prolog/problems/family_relations/descendant_2/common.py +++ b/prolog/problems/family_relations/descendant_2/common.py @@ -30,6 +30,7 @@ hint_type = { 'descendant_of_oneself_with_or': Hint('descendant_of_oneself_with_or'), 'descendant_need_not_be_parent': Hint('descendant_need_not_be_parent'), 'wrong_direction': Hint('wrong_direction'), + 'predicate_always_false': Hint('predicate_always_false'), 'timeout': Hint('timeout'), 'final_hint': Hint('final_hint'), } @@ -88,6 +89,10 @@ def hint(code, aux_code): return [{'id': 'grandparent_used_markup', 'start': m[0], 'end': m[1]} for m in marks] + \ [{'id': 'grandparent_used'}] + # target predicate seems to always be false + if not prolog.engine.ask_truthTO(engine_id, 'descendant(_, _)'): + return [{'id': 'predicate_always_false'}] + # ancestor instead of descendant (wrong direction) # warning: knowledge base dependent if prolog.engine.ask_truthTO(engine_id, diff --git a/prolog/problems/family_relations/descendant_2/sl.py b/prolog/problems/family_relations/descendant_2/sl.py index 9f1d818..c53c8b9 100644 --- a/prolog/problems/family_relations/descendant_2/sl.py +++ b/prolog/problems/family_relations/descendant_2/sl.py @@ -68,6 +68,14 @@ Premisli, morda se ti splača tudi grafično skicirati tvojo trenutno rešitev.< 'descendant_need_not_be_parent': '''\

Potomec X 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 ali kaj podobnega).

''', 'timeout': '''\ -- cgit v1.2.1