Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- :- 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?
Advertisement
Add Comment
Please, Sign In to add comment