sudoku and for

This commit is contained in:
Vítor Santos Costa
2013-09-21 23:23:42 +01:00
parent 6033eba372
commit efddaab558
6 changed files with 331 additions and 107 deletions

View File

@@ -1,20 +1,48 @@
:- style_check( all ).
:- use_module(library(gecode/clpfd)).
:- use_module(library(maplist)).
t0 :-
test0(X),
writeln(X).
test0(X) :-
X in 1..10,
X #= 2.
t1 :-
test1(X),
writeln(X),
fail.
t1.
test1(X) :-
X in 1..10,
Y in 3..7,
Z in 1..4,
X / Y #= Z,
labeling([], [X]).
t2 :-
test2(X),
writeln(X),
fail.
t2.
test2(X) :-
X in 1..10,
X / 4 #= 2,
labeling([], [X]).
t3 :-
test3(X),
writeln(X),
fail.
t3.
test3(A) :-
A = [X,Y,Z],
A ins 1..4,
@@ -22,6 +50,13 @@ test3(A) :-
lex_chain(A),
all_different(A),
labeling([], [X,Y,Z]).
t4 :-
test4(X),
writeln(X),
fail.
t4.
test4(A) :-
A = [X,Y,Z],
A ins 1..4,
@@ -31,12 +66,26 @@ test4(A) :-
min(A, 1),
all_different(A),
labeling([], [X,Y,Z]).
t5 :-
test5(X),
writeln(X),
fail.
t5.
test5(A) :-
A = [X,Y,Z],
A ins 0..1,
in_relation( A, [[0,0,0],[0,1,0],[1,0,0]] ),
X #> 0,
labeling([], A).
t6 :-
test6(X),
writeln(X),
fail.
t6.
test6(A+B) :-
A = [X,Y,Z],
B = [X1,Y1,Z1],
@@ -50,12 +99,27 @@ test6(A+B) :-
Y1 #\= Z1,
labeling([], A),
labeling([], B).
t7 :-
test7(X),
writeln(X),
fail.
t7.
test7(A) :-
A = [X,Y,Z],
A ins 0..1,
in_dfa( A, 0, [t(0,0,0),t(0,1,1),t(1,0,0),t(-1,0,0)], [0]),
X #> 0,
labeling([], A).
t8 :-
test8(X),
writeln(X),
fail.
t8.
test8(A+B) :-
A = [X,Y,Z,W],
B = [X1,Y1,Z1,W1],