1:- module(tor_labeling,
2 [ tor_label/1
3 , ff_label/1
4 ]). 5
8
9:- use_module(tor). 10:- use_module(library(clpfd)). 11
12tor_label([]).
13tor_label([Var|Vars]) :-
14 ( var(Var) ->
15 fd_inf(Var,Value),
16 ( Var #= Value,
17 tor_label(Vars)
18 tor Var #\= Value,
19 tor_label([Var|Vars])
20 )
21 ;
22 tor_label(Vars)
23 ).
24
25ff_label([]).
26ff_label([Var|Vars]) :-
27 ( var(Var) ->
28 clpfd:fd_size_(Var, n(Size)),
29 clpfd:find_ff(Vars, Var, Size, TheVar),
30 clpfd:delete_eq([Var|Vars], TheVar, RestVars),
31 fd_inf(TheVar,Value),
32 ( TheVar