summaryrefslogtreecommitdiff
path: root/prolog
diff options
context:
space:
mode:
authorAleksander Sadikov <aleksander.sadikov@fri.uni-lj.si>2016-03-14 18:49:31 +0100
committerAleksander Sadikov <aleksander.sadikov@fri.uni-lj.si>2016-03-14 18:49:31 +0100
commit865425804481a4b002558ff2e794dcc3b54fd372 (patch)
treef5b9999138658850d9be9b580a291607aebf2846 /prolog
parent43afc45c5c5cb6bb8d1d9d99f45d3fcb4f03fa9b (diff)
Hint for conc/3 added.
Diffstat (limited to 'prolog')
-rw-r--r--prolog/problems/lists/conc_3/common.py5
-rw-r--r--prolog/problems/lists/conc_3/sl.py7
2 files changed, 12 insertions, 0 deletions
diff --git a/prolog/problems/lists/conc_3/common.py b/prolog/problems/lists/conc_3/common.py
index 105f801..58152a6 100644
--- a/prolog/problems/lists/conc_3/common.py
+++ b/prolog/problems/lists/conc_3/common.py
@@ -30,6 +30,7 @@ hint_type = {
'two_heads_markup': HintPopup('two_heads_markup'),
'two_heads': Hint('two_heads'),
'insertion_into_second_list': Hint('insertion_into_second_list'),
+ 'base_case_arbitrary': Hint('base_case_arbitrary'),
}
test_cases = [
@@ -107,6 +108,10 @@ def hint(code, aux_code):
return [{'id': 'two_heads_markup', 'start': m[0], 'end': m[1]} for m in marks] + \
[{'id': 'two_heads'}]
+ # base case succeeds with arbitrary result
+ if prolog.engine.ask_truthTO(engine_id, 'conc([], [a,b,c], L), var(L)'):
+ return [{'id': 'base_case_arbitrary'}]
+
# missing/failed base case
if not prolog.engine.ask_one(engine_id, 'conc([], [qa,qb,qc], [qa,qb,qc])'):
return [{'id': 'base_case'}]
diff --git a/prolog/problems/lists/conc_3/sl.py b/prolog/problems/lists/conc_3/sl.py
index dcc0391..551daef 100644
--- a/prolog/problems/lists/conc_3/sl.py
+++ b/prolog/problems/lists/conc_3/sl.py
@@ -47,6 +47,13 @@ Kaj bi bil, recimo, rezultat, če je prvi seznam kar prazen? (Samo prvi seznam n
v drugem seznamu je lahko karkoli.)</p>
''',
+ 'base_case_arbitrary': '''\
+<p>Kako je lahko rezultat konkatenacije seznamov poljuben seznam oz. karkoli?</p>
+<p>Če je tvoj robni pogoj podoben <code>conc([], L, _)</code>,
+ga še enkrat premisli: kaj je rezultat konkatenacije, kaj vračaš? Robni pogoj je vedno dokončno specificirana
+rešitev, tu načeloma ni neznank (<code>_</code> ali spremenljivk brez prirejenih vrednosti) v tem kar se vrača.</p>
+''',
+
'predicate_always_false': '''\
<p>Vse kaže, da tvoj predikat vedno vrne "false". Si mu dal pravilno ime, si se morda pri imenu zatipkal?</p>
<p>Če je ime pravilno, se morda splača preveriti tudi, če se nisi zatipkal kje drugje,