From d9809e87882a4248e215ee423c3fdb2fb5f6ee2d Mon Sep 17 00:00:00 2001 From: Aleksander Sadikov Date: Mon, 29 Feb 2016 17:40:06 +0100 Subject: Improved hints for cousin/2. --- prolog/problems/family_relations/cousin_2/common.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'prolog/problems/family_relations/cousin_2/common.py') diff --git a/prolog/problems/family_relations/cousin_2/common.py b/prolog/problems/family_relations/cousin_2/common.py index 86ef5cc..ffebdae 100644 --- a/prolog/problems/family_relations/cousin_2/common.py +++ b/prolog/problems/family_relations/cousin_2/common.py @@ -97,17 +97,16 @@ def hint(code, aux_code): 'findall(_, cousin(X, Y), L), (length(L, 14) ; length(L, 16))'): return [{'id': 'precedence_fail'}] - # cousin should not be brother or sister - # common parent, probably solved via grandparent - if prolog.engine.ask_truth(engine_id, - 'cousin(X, Y), (brother(X, Y) ; sister(X, Y))'): - return [{'id': 'cousin_vs_sibling'}] - # cousin to him/herself # just common grandparent is not enough if prolog.engine.ask_truth(engine_id, 'cousin(X, X)'): return [{'id': 'cousin_to_oneself'}] + # cousin should not be brother or sister + # common parent, probably solved via grandparent + if prolog.engine.ask_truth(engine_id, + 'cousin(X, Y), parent(P, X), parent(P, Y)'): + return [{'id': 'cousin_vs_sibling'}] # X (or Y) does not necessarily need to be a parent # cousin is a symmetrical relation, so X and Y are covered by this -- cgit v1.2.1