From 81d6131319b03aadfb89a6ec0e93d82911b755ef Mon Sep 17 00:00:00 2001
From: Aleksander Sadikov Prazen seznam ni prav pretirano dolg, če pa ni prazen, pa ima glavo in rep. Če je rep (seznam brez ene glave) dolg Če vzamem stran eno glavo, rekurzija mi reši (za ena) manjši problem in če rezultatu rekurzije prištejem 1,
+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? Kateri seznam je najkrajši od vseh seznamov na svetu?NT
, potem je celoten seznam dolg NT + 1
.==
je strožji od operatorja =
v smislu, da je za slednjega dovolj,
@@ -22,8 +33,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 +54,37 @@ da je X
hkrati starš in sestra od Y
ali kaj podobno z
''',
'arbitrary_base_case': '''\
-arbitrary_base_case
+Kako dolg je prazen seznam? 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.
+H_instead_of_+1
+Kaj si res prištel vrednost elementa (glave) namesto njegove dolžine (ena)? ;)
''', - '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 + 1)
? S tem vsiljuješ rekurziji
+da mora
same_var_on_both_sides_of_is
+Si morda zapisal pogoj oblike N is N + 1
? Predpostavi, da je N
recimo enak 3. S tem
+si v resnici rekel, da mora 3 biti enako kot 4 (3+1). Prolog je logičen jezik in zato z največjim veseljem
+reče ne! Uporabi novo spremenljivko, za odvečne bo tako ali tako poskrbel "garbage collector".