From 8eb67a4b388698f01b06cdf6a1a7935ab166ab34 Mon Sep 17 00:00:00 2001
From: Aleksander Sadikov
Če je podani seznam L
sestavljen iz glave H
in repa T
ter predpostavimo,
-da je največji element v T
enak MaxT
. Če dalje velja še, da je vrednost H
+da je največji element v T
enak MaxT
ter dalje velja še, da je vrednost H
večja od MaxT
, potem je H
največji element v L
. Ali pa velja, da je
vrednost H
manjša od MaxT
, v tem primeru pa je MaxT
največji element v
L
.
Kot vedno, poskusi prevesti na manjši problem. Recimo, da že imaš najmanjši element v repu seznama...
+''', '''\ +Najmanjši element v repu (seznamu brez glave H
) primerjaj z vrednostjo glave H
, tisti,
+ki je manjši zmaga in ga vrneš!
Če je podani seznam L
sestavljen iz glave H
in repa T
ter predpostavimo,
+da je najmanjši element v T
enak MinT
ter dalje velja še, da je vrednost H
+manjša od MinT
, potem je H
najmanjši element v L
. Ali pa velja, da je
+vrednost H
večja od MinT
, v tem primeru pa je MinT
najmanjši element v
+L
.
Operator ==
je strožji od operatorja =
v smislu, da je za slednjega dovolj,
@@ -24,8 +39,7 @@ implicitno že kar v argumentih predikata (glavi stavka).
Si pomislil na robni pogoj? Kaj je najbolj enostaven primer, ko je element v seznamu? -Do katerega elementa najlažje prideš?
+Si pomislil na robni pogoj? Kaj je najkrajši seznam, ki ima očiten najmanjši element?
''', 'recursive_case': '''\ @@ -37,7 +51,7 @@ Do katerega elementa najlažje prideš?Č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?
Možno je seveda tudi, da so tvoji pogoji prestrogi ali celo nemogoči (kot bi bila npr. zahteva,
-da je X
hkrati starš in sestra od Y
ali kaj podobno zlobnega).
N
enako kot N + 1
ali kaj podobno logično zlobnega).
''',
'timeout': '''\
@@ -46,26 +60,33 @@ da je X
hkrati starš in sestra od Y
ali kaj podobno z
''',
'empty_list_base_case': '''\
-empty_list_base_case
+V praznem seznamu boš težko našel najmanjši element. Kaj, če se tokrat ustaviš malo prej?
''', 'list_instead_of_elem_base_case': '''\ -list_instead_of_elem_base_case
+Vrni element in ne seznam!
''', 'duplicates_not_covered': '''\ -duplicates_not_covered
+Si pomislil, da so v seznamu lahko tudi duplikati?
''', 'args_not_instantiated': '''\ -args_not_instantiated
+Napaka, ki si jo dobil od prologa, pomeni, da ob uporabi aritmetike niso podane vse vrednosti spremenljivk.
+Si morda pozabil, da konjunkcija veže močneje od disjunkcije oz. da je vsak prologov stavek (veja, pravilo) +samostojen v smislu dosega spremenljivk? Morda je to problem. Pozorno poglej oba bloka kode (pred in za podpičjem), +oziroma obe pravili.
''', 'unprotected_branch': '''\ -unprotected_branch
+Zdi se mi, da si pozabil "zaščititi" eno izmed obeh vej. Obe veji (disjunkciji) potrebujeta pogoj, ne zanašaj se +na to, da če je prišel v drugo vejo, potem prva ne velja. Velja OR in ne XOR. Zato jih moraš ti narediti +ekskluzivne. Poskusi tole vprašanje in poglej vse možne rešitve, boš videl v čem je problem.
+?- min([1,9,3,8,6], Min).
one_branch_missing
+Si morda pozabil na eno izmed možnosti? Glava je lahko ali večja ali manjša od +najmanjšega elementa v repu.
''', } -- cgit v1.2.1