diff options
author | Aleksander Sadikov <aleksander.sadikov@fri.uni-lj.si> | 2016-03-30 15:04:25 +0200 |
---|---|---|
committer | Aleksander Sadikov <aleksander.sadikov@fri.uni-lj.si> | 2016-03-30 15:04:25 +0200 |
commit | 268eb06e05c9a6062e0d34905bed2ecd1696f82c (patch) | |
tree | aa15b7bd32bf65f1f7a36bb7f384b94f55ee4d6e /prolog/problems | |
parent | 0b8a785ce0212783b45a328ba2ab6600ae05d333 (diff) |
Hints and plans for is_sorted/1 added.
Diffstat (limited to 'prolog/problems')
-rw-r--r-- | prolog/problems/sorting/is_sorted_1/sl.py | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/prolog/problems/sorting/is_sorted_1/sl.py b/prolog/problems/sorting/is_sorted_1/sl.py index d4cd999..485ecf3 100644 --- a/prolog/problems/sorting/is_sorted_1/sl.py +++ b/prolog/problems/sorting/is_sorted_1/sl.py @@ -1,3 +1,5 @@ +# coding=utf-8 + name = 'is_sorted/1' slug = 'Preveri, če so elementi seznama naraščajoče urejeni' @@ -10,6 +12,18 @@ description = '''\ false. </pre>''' +plan = ['''\ +<p>Kot vedno, poskusi prevesti na manjši problem. Naredi ustrezno primerjavo na začetku seznama, rep +pa prepusti rekurziji. </p> +''', '''\ +<p>Saj znaš dostopati do prvih dveh elementov seznama, kajne? Aritmetične operatorje za primerjanje pa smo +spoznali v prejšnjem sklopu.</p> +''', '''\ +<p>Če je podani seznam <code>L</code> sestavljen iz glav <code>H1</code> in <code>H2</code> ter repa <code>T</code> +in predpostavimo, da je rep <code>T</code> z drugo glavo vred urejen ter nadalje velja, da je <code>H1</code> manjši +ali enak <code>H2</code>, potem je celoten seznam <code>L</code> urejen.</p> +'''] + hint = { 'eq_instead_of_equ': '''\ <p>Operator <code>==</code> je strožji od operatorja <code>=</code> v smislu, da je za slednjega dovolj, @@ -23,8 +37,7 @@ implicitno že kar v argumentih predikata (glavi stavka).</p> ''', 'base_case': '''\ -<p>Si pomislil na robni pogoj? Kaj je najbolj enostaven primer, ko je element v seznamu? -Do katerega elementa najlažje prideš?</p> +<p>Si pomislil na robni pogoj? Kaj je najkrajši urejen seznam?</p> ''', 'recursive_case': '''\ @@ -32,11 +45,11 @@ Do katerega elementa najlažje prideš?</p> ''', 'predicate_always_false': '''\ -<p>Vse kaže, da tvoj predikat vedno vrne <code>false</code>. Si mu dal pravilno ime, si se morda pri imenu zatipkal?</p> +<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, je morda kakšna pika namesto vejice ali obratno, morda kakšna spremenljivka z malo začetnico?</p> <p>Možno je seveda tudi, da so tvoji pogoji prestrogi ali celo nemogoči (kot bi bila npr. zahteva, -da je <code>X</code> hkrati starš in sestra od <code>Y</code> ali kaj podobno zlobnega).</p> +da je <code>N</code> enako kot <code>N + 1</code> ali kaj podobno logično zlobnega).</p> ''', 'timeout': '''\ @@ -61,10 +74,14 @@ da je <code>X</code> hkrati starš in sestra od <code>Y</code> ali kaj podobno z ''', 'both_heads_omitted_from_recursion': '''\ -<p>both_heads_omitted_from_recursion</p> +<p>Jemlješ po dva elementa iz seznama preden greš v rekurzijo? Poskušaš malce prihraniti pri primerjavah, kajne? ;) +Ampak žal to ne gre! Od spodnjih dveh primerov eden deluje pravilno in eden ne, ugotovi v čem je razlika. </p> +<p><code>?- is_sorted([1,3,14,16,24,25]).</code></p> +<p><code>?- is_sorted([24,25,14,16,1,3]).</code></p> ''', 'min_used': '''\ -<p>min_used</p> +<p>Poskusi rešiti brez uporabe predikata <code>min/2</code>, s časovno zahtevnostjo O(n). Z uporabo +<code>min/2</code> je le-ta tipično O(n*n).</p> ''', } |