:- use_module(library(clpfd)). valid_neighbors(_, [_]). valid_neighbors(Size, [A, N, B|T]):- N = x, A #> 0, A #=< Size, (A #= B - 1; A #= B + 1), valid_neighbors(Size, [B|T]). valid_neighbors(Size, [A, N, B|T]):- N = o, A #> 0, A #=< Size, A #\= B - 1, A #\= B + 1, valid_neighbors(Size, [B|T]). % Sample Query ?- valid_neighbors(4, [A, x, B, o, C, x, D]). % Output A in 1..3, A+1#=B, B in 2..4, B#\=C+1, C#\=B+1, C in 1..4, C+1#=D, D in 2..5 % Size is passed as 4, how can D be 5 when we have the constraint A #=< Size?
Comments
0 B
|👍
/👎
0 B
|👍
/👎