From 4463de7f50fd2c737f94485f548b36466899ff30 Mon Sep 17 00:00:00 2001
From: Aleksander Sadikov Vsota elementov praznega seznama ni prav velika. Sicer pa seštevamo, element po element, lepo rekurzivno. Če je vsota elementov v repu (seznamu brez glave Če vzamem stran eno glavo, rekurzija mi reši (za ena) manjši problem in če rezultatu rekurzije prištejem vrednost
+prej odvzete glave, potem sem dobil ravno dolžino celotnega seznama. Operator 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? Koliko je vsota elementov v praznem seznamu?H
) enaka SumT
, potem je vsota elementov
+celotnega seznama enaka SumT + H
.==
je strožji od operatorja =
v smislu, da je za slednjega dovolj,
@@ -22,8 +34,7 @@ implicitno že kar v argumentih predikata (glavi stavka).
Č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': '''\
@@ -44,26 +55,38 @@ da je X
hkrati starš in sestra od Y
ali kaj podobno z
''',
'arbitrary_base_case': '''\
-arbitrary_base_case
+Koliko je vsota elementov praznega seznama? Podaj konkretno številko!
''', 'args_not_instantiated': '''\ -args_not_instantiated
+Napaka, ki si jo dobil od prologa, pomeni, da ob uporabi aritmetike niso podane vse vrednosti spremenljivk. +Pri aritmetiki je vrstni red ciljev (konjunktov) žal pomemben.
+Morda poskusiš pomakniti aritmetiko bolj na konec?
''', '=_instead_of_is': '''\ -=_instead_of_is
+Si morda uporabil =
namesto is
? Operator =
je namenjen prilagajanju
+(unifikaciji) in poskusi pustiti obe strani čimbolj nespremenjeni, medtem ko operator is
izvede
+dejanski aritmetični izračun izraza na svoji desni strani ter ga šele potem poskusi prilagoditi (!)
+svoji levi strani.
+1_instead_of_+H
+Kaj si res prištel ena namesto vrednosti elementa (glave)? Kopiranje od prejšnje naloge, morda? ;)
''', - 'forcing_result_onto_recursion': '''\ -forcing_result_onto_recursion
+ 'forcing_result_onto_recursion': ''' +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.
+Je tvoj rekurzivni klic oblike len(T, LenT + H)
? S tem vsiljuješ rekurziji
+da mora
same_var_on_both_sides_of_is
+Si morda zapisal pogoj oblike N is N + H
? Predpostavi, da je N
recimo enak 3.
+S tem si v resnici rekel, da mora 3 biti enako kot 3+H. Prolog je logičen jezik in zato z največjim veseljem
+reče ne (seveda če H ni enako nič, he he)! Uporabi novo spremenljivko, za odvečne bo tako ali tako
+poskrbel "garbage collector".