From 8d8babae7486f17f28c58d7b65e48bf668b27ffc Mon Sep 17 00:00:00 2001 From: Aleksander Sadikov Date: Mon, 21 Mar 2016 14:47:29 +0100 Subject: Hints and plans for shiftright/2 added. --- prolog/problems/lists_advanced/shiftright_2/sl.py | 34 ++++++++++++++++++----- 1 file changed, 27 insertions(+), 7 deletions(-) (limited to 'prolog/problems/lists_advanced/shiftright_2/sl.py') diff --git a/prolog/problems/lists_advanced/shiftright_2/sl.py b/prolog/problems/lists_advanced/shiftright_2/sl.py index 3dfb637..11b1cf0 100644 --- a/prolog/problems/lists_advanced/shiftright_2/sl.py +++ b/prolog/problems/lists_advanced/shiftright_2/sl.py @@ -1,3 +1,5 @@ +# coding=utf-8 + name = 'shiftright/2' slug = 'Premakni elemente seznama za eno mesto v desno' @@ -8,6 +10,18 @@ description = '''\ X = [5,1,2,3,4]. ''' +plan = ['''\ +

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 [X]. To bi znalo priti prav, kakor tudi predikat +conc/3.

+''', '''\ +

Če je podani seznam 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.

+'''] + hint = { 'eq_instead_of_equ': '''\

Operator == je strožji od operatorja = v smislu, da je za slednjega dovolj, @@ -26,7 +40,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).

+da je N enako kot N + 1 ali kaj podobno logično zlobnega).

''', 'timeout': '''\ @@ -35,17 +49,23 @@ da je 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

''', + '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': '''\ -

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.

''', } -- cgit v1.2.1