Hello!
Kipróbáltam a case globális korlátot, de legnagyobb erőfeszítéseim
ellenére sem sikerült működésre bírnom. Mindig "consistecy error"
exceptiont dob.
A következő globális korlátot szeretném megvalósítani:
Adott egy 2x2-es mátrix:
block(NW, NE,
SW, SE).
Az elemek 0-tól 1-ig terjedhetnek, és ha a négy változó között vannak
1-esek, mindenképp téglalapot kell alkotniuk.
Az állapotokat hasonlóképpen neveztem el, mint ahogy a 96. oldalon a
felemasok predikátumban láttam.
A példaprogramnak végre kellene hajtania a NW#=0 szűkítést, mert a bl
felső mező biztosan nem lehet 1-es.
Köszönöm a segítséget,
Peti
casetest(B) :-
B=[block(NW,NE,SW,SE)],
domain([NW,NE,SW,SE], 0, 1),
NE#=0, SE#=1,
case(block(NW,NE,SW,SE), B,
[node([] , NW, [(0..0)-x0, (1..1)-x1]),
node(x0 , NE, [(0..0), (1..1)-x01]),
node(x1 , NE, [(0..0)-x10, (1..1)-x11]),
node(x01 , SW, [0..0]),
node(x10 , SE, [0..0]),
node(x11 , SW, [(0..0)-x110, (1..1)-x111]),
node(x110, SE, [0..0]),
node(x111, SE, [1..1])
]).