From 865425804481a4b002558ff2e794dcc3b54fd372 Mon Sep 17 00:00:00 2001 From: Aleksander Sadikov Date: Mon, 14 Mar 2016 18:49:31 +0100 Subject: Hint for conc/3 added. --- prolog/problems/lists/conc_3/common.py | 5 +++++ prolog/problems/lists/conc_3/sl.py | 7 +++++++ 2 files changed, 12 insertions(+) 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 @@ -45,6 +45,13 @@ implicitno že kar v argumentih predikata (glavi stavka).

Si pomislil na robni pogoj? Kaj je najbolj enostaven primer? Kaj bi bil, recimo, rezultat, če je prvi seznam kar prazen? (Samo prvi seznam naj bo prazen, v drugem seznamu je lahko karkoli.)

+''', + + 'base_case_arbitrary': '''\ +

Kako je lahko rezultat konkatenacije seznamov poljuben seznam oz. karkoli?

+

Če je tvoj robni pogoj podoben conc([], L, _), +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 (_ ali spremenljivk brez prirejenih vrednosti) v tem kar se vrača.

''', 'predicate_always_false': '''\ -- cgit v1.2.1