diff options
author | Aleksander Sadikov <aleksander.sadikov@fri.uni-lj.si> | 2016-03-14 17:22:11 +0100 |
---|---|---|
committer | Aleksander Sadikov <aleksander.sadikov@fri.uni-lj.si> | 2016-03-14 17:22:11 +0100 |
commit | 3ed1137118bf719eab1d3fc1d230441057cdf854 (patch) | |
tree | 21706b863fba74cb93ea3782f0aa9636c2dff7a2 /prolog/problems/lists/divide_3 | |
parent | 0355f4ae1e1fa64a6855d3e19ec230c8a14aa5cf (diff) |
Basics for permute/2 added.
Diffstat (limited to 'prolog/problems/lists/divide_3')
-rw-r--r-- | prolog/problems/lists/divide_3/common.py | 2 | ||||
-rw-r--r-- | prolog/problems/lists/divide_3/sl.py | 10 |
2 files changed, 7 insertions, 5 deletions
diff --git a/prolog/problems/lists/divide_3/common.py b/prolog/problems/lists/divide_3/common.py index 2d93c4c..ff42d34 100644 --- a/prolog/problems/lists/divide_3/common.py +++ b/prolog/problems/lists/divide_3/common.py @@ -105,7 +105,7 @@ def hint(code, aux_code): return [{'id': 'second_base_case_missing'}] # missing/failed base case - if not prolog.engine.ask_truthTO(engine_id, 'divide([], [], [])'): + if not prolog.engine.ask_truth(engine_id, 'divide([], [], [])'): return [{'id': 'base_case'}] # # target predicate seems to always be false diff --git a/prolog/problems/lists/divide_3/sl.py b/prolog/problems/lists/divide_3/sl.py index 3a9e5c2..bec9282 100644 --- a/prolog/problems/lists/divide_3/sl.py +++ b/prolog/problems/lists/divide_3/sl.py @@ -46,12 +46,14 @@ implicitno že kar v argumentih predikata (glavi stavka).</p> <p>Kako je lahko rezultat delitve seznama poljuben seznam oz. karkoli?</p> <p>Če je tvoj robni pogoj v stilu <code>divide([], _, _)</code> ali <code>divide([X], [X|_], ...)</code>, ga še enkrat premisli: kaj je rezultat delitve, kaj vračaš? Robni pogoj je vedno dokončno specificirana -rešitev, tu načeloma ni neznank (<code>_</code> ali neinicializiranih spremenljivk) v tem kar se vrača.</p> +rešitev, tu načeloma ni neznank (<code>_</code> ali spremenljivk brez prirejenih vrednosti) v tem kar se vrača.</p> ''', 'second_base_case_missing': '''\ <p>Rekurzija se ne konča vedno uspešno. Sta morda dva različna primera kako se lahko izteče? Saj veš, -sodo in liho ;) Je morda potreben še kakšen robni pogoj?</p> +sodo in liho ;) Je morda potreben še kakšen robni pogoj? Poskusi naslednja klica, eden bo uspešen, drugi pa ne:</p> +<p><code>?- divide([a,b,c], L1, L2).</code></p> +<p><code>?- divide([a,b,c,d], L1, L2).</code></p> ''', 'unsuccessful_conc_use': '''\ @@ -63,8 +65,8 @@ težko boš prišel do posameznih elementov. Poskusi raje brez.</p> <p>Ne vsiljuj rekurziji kaj naj vrne, prepusti se ji. To je tisti del, ko narediš predpostavko, če je ta izpolnjena, potem bo tvoje pravilo delovalo za večji primer.</p> <p>Je tvoj rekurzivni klic oblike <code>divide(T, [H1|...], [H2|...])</code>? S tem vsiljuješ rekurziji -da mora <emph>vrniti</emph> tudi obe glavi, ki jih sploh ne pozna, ker si jih ti ravnokar vzel stran! To moraš -narediti ti z (obdelanimi) rezultati, ki jih rezurzija vrne. Skratka, elementa <code>H1</code> in <code>H2</code> +da mora <emph>vrniti</emph> tudi obe glavi, ki jih sploh ne pozna, ker si jih ravnokar vzel stran! To moraš +narediti ti z rezultati, ki jih rekurzija vrne. Skratka, elementa <code>H1</code> in <code>H2</code> dodaj izven rekurzivnega klica.</p> ''', |