Moortiii

Neighbors

Nov 13th, 2019
510
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 0.59 KB | None | 0 0
  1. :- use_module(library(clpfd)).
  2.  
  3. valid_neighbors(_, [_]).
  4.  
  5. valid_neighbors(Size, [A, N, B|T]):-
  6.     N = x,
  7.     A #> 0,
  8.     A #=< Size,
  9.     (A #= B - 1;
  10.      A #= B + 1),
  11.     valid_neighbors(Size, [B|T]).
  12.  
  13. valid_neighbors(Size, [A, N, B|T]):-
  14.     N = o,
  15.     A #> 0,
  16.     A #=< Size,
  17.     A #\= B - 1,
  18.     A #\= B + 1,
  19.     valid_neighbors(Size, [B|T]).
  20.  
  21. % Sample Query
  22. ?- valid_neighbors(4, [A, x, B, o, C, x, D]).
  23.  
  24. % Output
  25. A in 1..3,
  26. A+1#=B,
  27. B in 2..4,
  28. B#\=C+1,
  29. C#\=B+1,
  30. C in 1..4,
  31. C+1#=D,
  32. 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