From 86bfc55d2ddc19b79127f2c788609635b702dbfd Mon Sep 17 00:00:00 2001 From: Aleksander Sadikov Date: Sat, 17 Oct 2015 20:04:54 +0200 Subject: Family relations section fully hint-ready (just a few minor things missing). --- prolog/problems/family_relations/brother_2/common.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'prolog/problems/family_relations/brother_2/common.py') diff --git a/prolog/problems/family_relations/brother_2/common.py b/prolog/problems/family_relations/brother_2/common.py index 48b89fe..654825e 100644 --- a/prolog/problems/family_relations/brother_2/common.py +++ b/prolog/problems/family_relations/brother_2/common.py @@ -23,8 +23,9 @@ brother(X, Y) :- hint_type = { 'x_must_be_male': Hint('x_must_be_male'), 'common_parent_needed': Hint('common_parent_needed'), - 'y_can_be_of_any_gender': Hint('Y_can_be_of_any_gender'), + 'y_can_be_of_any_gender': Hint('y_can_be_of_any_gender'), 'x_y_must_be_different': Hint('x_y_must_be_different'), + 'neq_used_too_early': Hint('neq_used_too_early'), } test_cases = [ @@ -64,7 +65,7 @@ def test(program, solved_problems): return passed, hints def hint(program, solved_problems): - # tokens = prolog.util.tokenize(program) + tokens = prolog.util.tokenize(program) code = (program + '\n' + server.problems.solutions_for_problems('prolog', solved_problems) + '\n' + @@ -91,10 +92,15 @@ def hint(program, solved_problems): return [{'id': 'y_can_be_of_any_gender'}] # X and Y must be different - if prolog.engine.ask_truth(engine_id, + if prolog.util.Token('NEQ', '\==') not in tokens and prolog.engine.ask_truth(engine_id, 'setof(X, (member(X, [william, alessandro, andrew]), brother(X, X)), L), length(L, 3)'): return [{'id': 'x_y_must_be_different'}] + # X and Y must be different, but \== was used + if prolog.util.Token('NEQ', '\==') in tokens and prolog.engine.ask_truth(engine_id, + 'setof(X/Y, brother(X, Y), L), member(alessandro/alessandro, L), member(andrew/andrew, L), member(william/william, L)'): + return [{'id': 'neq_used_too_early'}] + except socket.timeout as ex: pass -- cgit v1.2.1