From 8a9f429b6c126e00af8d5f2650d6c4d705917b6a Mon Sep 17 00:00:00 2001 From: Aleksander Sadikov Date: Fri, 11 Mar 2016 19:58:03 +0100 Subject: Plans for conc/3 added. Order of hints in dup/2 corrected. --- prolog/problems/lists/dup_2/common.py | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) (limited to 'prolog/problems/lists/dup_2') diff --git a/prolog/problems/lists/dup_2/common.py b/prolog/problems/lists/dup_2/common.py index 0ed3914..6e31690 100644 --- a/prolog/problems/lists/dup_2/common.py +++ b/prolog/problems/lists/dup_2/common.py @@ -77,15 +77,6 @@ def hint(code, aux_code): # recursion is getting bigger and bigger - # forcing result onto recursion; case of dup(T, [H,H|L]) or dup(T, [H,H|T]) - if not prolog.engine.ask_truthTO(engine_id, 'dup([a,b,c,d,e], _)') and \ - (prolog.engine.ask_truth(engine_id, - 'asserta( dup([b], [a,a,yowza]) ), dup([a,b], [yowza]), retract( dup([b], [a,a,yowza]) )') or \ - prolog.engine.ask_truth(engine_id, - 'asserta( dup([b], [a,a,b]) ), dup([a,b], [b]), retract( dup([b], [a,a,b]) )')): - return [{'id': 'forcing_result_onto_recursion'}] - - # base case succeeds with arbitrary result if prolog.engine.ask_truthTO(engine_id, 'dup([], L), var(L)'): return [{'id': 'base_case_arbitrary'}] @@ -94,6 +85,14 @@ def hint(code, aux_code): if prolog.engine.ask_truthTO(engine_id, 'dup([q], [q,q]), \+ dup([], [])'): return [{'id': 'base_case_missing_[]'}] + # forcing result onto recursion; case of dup(T, [H,H|L]) or dup(T, [H,H|T]) + if not prolog.engine.ask_truthTO(engine_id, 'dup([a,b,c,d,e], _)') and \ + (prolog.engine.ask_truth(engine_id, + 'asserta( dup([b], [a,a,yowza]) ), dup([a,b], [yowza]), retract( dup([b], [a,a,yowza]) )') or \ + prolog.engine.ask_truth(engine_id, + 'asserta( dup([b], [a,a,b]) ), dup([a,b], [b]), retract( dup([b], [a,a,b]) )')): + return [{'id': 'forcing_result_onto_recursion'}] + # missing/failed base case if not prolog.engine.ask_one(engine_id, 'dup([], [])'): return [{'id': 'base_case'}] -- cgit v1.2.1