summaryrefslogtreecommitdiff
path: root/prolog/problems/lists/conc_3/common.py
diff options
context:
space:
mode:
authorAleksander Sadikov <aleksander.sadikov@fri.uni-lj.si>2016-03-11 21:58:10 +0100
committerAleksander Sadikov <aleksander.sadikov@fri.uni-lj.si>2016-03-11 21:58:10 +0100
commitdb15c60df2cbc9c310422e1ce0fd4409acc4ce01 (patch)
treeae95275121b8ce1db6531c324e121b2b2611be17 /prolog/problems/lists/conc_3/common.py
parent8a9f429b6c126e00af8d5f2650d6c4d705917b6a (diff)
Hints for conc/3 added. And some misc bits here & there.
Diffstat (limited to 'prolog/problems/lists/conc_3/common.py')
-rw-r--r--prolog/problems/lists/conc_3/common.py14
1 files changed, 12 insertions, 2 deletions
diff --git a/prolog/problems/lists/conc_3/common.py b/prolog/problems/lists/conc_3/common.py
index ce81bbe..3ed35bc 100644
--- a/prolog/problems/lists/conc_3/common.py
+++ b/prolog/problems/lists/conc_3/common.py
@@ -25,6 +25,7 @@ hint_type = {
'base_case': Hint('base_case'),
'timeout': Hint('timeout'),
'final_hint': Hint('final_hint'),
+ 'second_list_iteration': Hint('second_list_iteration'),
}
test_cases = [
@@ -76,12 +77,21 @@ def hint(code, aux_code):
# recursion is getting bigger and bigger
+# # missing/failed base case
+# if not prolog.engine.ask_truthTO(engine_id, 'conc([], [qa,qb,qc], [qa,qb,qc])'):
+# return [{'id': 'base_case'}]
+
+ # shortening the second list instead of first list
+ if prolog.engine.ask_truthTO(engine_id,
+ 'conc([a,b,c], [1,2,3,4], L), (L = [1,2,3,4,a,b,c] ; L = [4,3,2,1,a,b,c])'):
+ return [{'id': 'second_list_iteration'}]
+
# missing/failed base case
- if not prolog.engine.ask_truthTO(engine_id, 'memb(qq, [qq,_,_,_])'):
+ if not prolog.engine.ask_one(engine_id, 'conc([], [qa,qb,qc], [qa,qb,qc])'):
return [{'id': 'base_case'}]
# target predicate seems to always be false
- if not prolog.engine.ask_truth(engine_id, 'memb(_, [_,_,_,_,_,_])'):
+ if not prolog.engine.ask_truth(engine_id, 'conc([_,_,_,_,_,_], [_,_,_], _)'):
return [{'id': 'predicate_always_false'}]
except socket.timeout as ex: