diff options
author | Aleksander Sadikov <aleksander.sadikov@fri.uni-lj.si> | 2016-03-14 18:49:31 +0100 |
---|---|---|
committer | Aleksander Sadikov <aleksander.sadikov@fri.uni-lj.si> | 2016-03-14 18:49:31 +0100 |
commit | 865425804481a4b002558ff2e794dcc3b54fd372 (patch) | |
tree | f5b9999138658850d9be9b580a291607aebf2846 | |
parent | 43afc45c5c5cb6bb8d1d9d99f45d3fcb4f03fa9b (diff) |
Hint for conc/3 added.
-rw-r--r-- | prolog/problems/lists/conc_3/common.py | 5 | ||||
-rw-r--r-- | prolog/problems/lists/conc_3/sl.py | 7 |
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, |