From 8d8babae7486f17f28c58d7b65e48bf668b27ffc Mon Sep 17 00:00:00 2001
From: Aleksander Sadikov V seznamu vzamem zadnji element in ga dodam preostanku na začetek. Saj se še spomniš od prejšnjič kako vzameš
+zadnji element seznamu? Dodajanje na začetek pa je povsem preprosto, kajne? Seznam dolžine ena je videti kot vzorec Če je podani seznam Operator Č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]
. To bi znalo priti prav, kakor tudi predikat
+conc/3
.L
sestavljen iz zadnjega elementa E
in preostanka L1
+in če E
dodamo na začetek L1
, potem je rezultat seznam L
premaknjen
+v desno.==
je strožji od operatorja =
v smislu, da je za slednjega dovolj,
@@ -26,7 +40,7 @@ implicitno že kar v argumentih predikata (glavi stavka).X
hkrati starš in sestra od Y
ali kaj podobno zlobnega).N
enako kot N + 1
ali kaj podobno logično zlobnega).
X
hkrati starš in sestra od Y
ali kaj podobno z
''',
'conc_2nd_argument_not_1elem_list': '''\
-conc_2nd_argument_not_1elem_list
''', +Se spomniš kako izgleda "vzorec", ki predstavlja seznam s točno enim elementom? Ne tako kot drugi argument, ki
+si ga podal predikatu conc/3
. ;)
arbitrary_result
''', + 'arbitrary_result': '''\ +Si pravilno povezal vse spremenljivke? Zgleda namreč, da vračaš kar poljuben rezultat (spremenljivko brez +določene vrednosti). Opozorila "singleton variables" večinoma ni pametno ignorirati.
+''', 'shiftleftish_solution': '''\ -shiftleftish_solution
''', +Rep seznama je vedno seznam in ne element. Kako si dobil zadnji element? Tako ne bo šlo...
''', 'last_used': '''\ -last_used
''', +S pomočjo predikata last/2
bo težko, ker zadnji element ostane v seznamu. Poskusi raje s
+predikatom conc/3
.
final_hint
''', +Predikata shiftleft/2
in shiftright/2
naredita ravno nasprotni stvari. Če samo
+obrneš argumente, dobiš drugega. Tako bi lahko sprogramiral shiftright/2
tudi samo s klicem
+shiftleft/2
. Saj veš, v prologu večinoma ni določeno kaj so vhodi in kaj izhodi.