Advertisement
przemko

Więzy -- hetmany

Jun 14th, 2017
317
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Prolog 0.50 KB | None | 0 0
  1. % hetmany.pl
  2.  
  3. :- use_module(library(clpfd)).
  4.  
  5. hetmany_gt(N, P) :-
  6.     numlist(1, N, X),
  7.     permutation(X, P),
  8.     \+ niebezpieczna(P).
  9.  
  10. niebezpieczna(P) :-
  11.     append(_, [I | L1], P),
  12.     append(L2, [J | _], L1),
  13.     length(L2, K),
  14.     abs(I-J) =:= K + 1.
  15.  
  16. hetmany(N, P) :-
  17.     length(P, N),
  18.     P ins 1..N,
  19.     bezpieczna(P),
  20.     labeling([ffc], P).
  21.  
  22. bezpieczna([]).
  23. bezpieczna([I | L]) :-
  24.     bezpieczna(L, I, 1),
  25.     bezpieczna(L).
  26.  
  27. bezpieczna([], _, _).
  28. bezpieczna([J | L], I, K) :-
  29.     I #\= J,
  30.     abs(I-J) #\= K,
  31.     K1 is K+1,
  32.     bezpieczna(L, I, K1).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement