Szevasztok!
Az lenne a kérdésem, hogy megpróbáltam megcsinálni a 4. kisházit,
elsőre úgy tűnt, hogy jól működik, pl az alábbi esetre:
domain([X,Y,U,Z], 0, 9), X#>=4, Y#>=8, U#>=5, max_lt([X,Y,U], Z).
De ha korlátokat hozok ki a max_lt/2 után akkor, valahogy nem akarja
felébreszteni az én korlátomat amit írtam, pl ennél a példánál:
domain([X,Y,U,Z], 0, 9), max_lt([X,Y,U], Z), X#>=4, Y#>=8, U#>=5.
A programkód-ból egy részlet, ami szerintem felelős a hibáért:
feltmake([],L,L).
feltmake([A|B],E,L) :- C=..[dom,A], E1=[C|E], feltmake(B,E1,L).
max_lt(L,Z):- feltmake(L,[],Flist), fd_global(max_lt(L,Z),L-0,[dom(Z)
|Flist]).
:- multifile clpfd:dispatch_global/4.
:- discontiguous clpfd:dispatch_global/4.
clpfd:dispatch_global(max_lt(_,Z),L0-S0,Ll-S,Actions) :-
fd_max(Z,Zmax), filter(L0,Ll,S0,S,Zmax), length(Ll,Len),
( Len=0 -> Sk is S+1, Actions=[Z in Sk..sup|exit]
; szuk(Ll,Zmax,Szlist), Sk is S+1, Szl=[Z in Sk..sup|Szlist],
Actions=[exit|Szl]
).
Segítségeteket előre is köszönöm!
Üdvözlettel:
Péter