A maradék:

----- 5. -----

:- use_module(library(clpfd)).

jobbl(L, N) :-
    length(L, Len),
    length(BL, Len),
    jobbl(L, BL, N),
    % Ha az elsõ elem lehetséges jobb-látvány, behelyettesíthetõ
    BL=[B1|_], L = [X1|_],
    ( B1 == 1 -> X1 #= N
    ; true
    ).
jobbl([L], [1], N) :-
    L in {0}\/{N}.
jobbl([X1,X2|Xs], [B1,B2|Bs], N) :-
    B1 #<=> (B2 #/\ (X2 #= 0)),
    B1 #=> X1 in {0}\/{N},
    jobbl([X2|Xs],[B2|Bs],N).

2009/6/18 pkt-zer0 <pktzerus@gmail.com>
Ha már a konzultáción nem tudtam ott lenni, legalább a múltkori vizsgasornak nekiestem. Az email további részében az első négy feladat megoldása következik (az ötödik még folyamatban), az én elképzeléseim szerint helyesen. Ha ez nem így volna, nagyra értékelném, ha az illetékesek (akár a tanár úr, akár azok, akik épp ezt a vizsgát írták) kiigazítanának.

~ Gyuri