main page
modules
namespaces
classes
files
Gecode home
Generated on Tue Jan 28 2020 00:00:00 for Gecode by
doxygen
1.8.17
test
flatzinc
sudoku.cpp
Go to the documentation of this file.
1
/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2
/*
3
* Main authors:
4
* Guido Tack <tack@gecode.org>
5
*
6
* Copyright:
7
* Guido Tack, 2014
8
*
9
* Last modified:
10
* $Date: 2014-11-04 13:28:32 +0100 (Tue, 04 Nov 2014) $ by $Author: schulte $
11
* $Revision: 14287 $
12
*
13
* This file is part of Gecode, the generic constraint
14
* development environment:
15
* http://www.gecode.org
16
*
17
* Permission is hereby granted, free of charge, to any person obtaining
18
* a copy of this software and associated documentation files (the
19
* "Software"), to deal in the Software without restriction, including
20
* without limitation the rights to use, copy, modify, merge, publish,
21
* distribute, sublicense, and/or sell copies of the Software, and to
22
* permit persons to whom the Software is furnished to do so, subject to
23
* the following conditions:
24
*
25
* The above copyright notice and this permission notice shall be
26
* included in all copies or substantial portions of the Software.
27
*
28
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
29
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
30
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
31
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
32
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
33
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
34
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
35
*
36
*/
37
38
#include "
test/flatzinc.hh
"
39
40
namespace
Test
{
namespace
FlatZinc {
41
42
namespace
{
44
class
Create {
45
public
:
46
48
Create(
void
) {
49
(void)
new
FlatZincTest(
"sudoku"
,
50
"predicate all_different_int(array [int] of var int: x);\n\
51
predicate bool_lin_ge(array [int] of int: a, array [int] of var bool: x, var int: c);\n\
52
predicate bool_lin_gt(array [int] of int: a, array [int] of var bool: x, var int: c);\n\
53
predicate bool_lin_lt(array [int] of int: a, array [int] of var bool: x, var int: c);\n\
54
predicate bool_lin_ne(array [int] of int: a, array [int] of var bool: x, var int: c);\n\
55
var 1..9: X____00001;\n\
56
var 1..9: X____00002;\n\
57
var 1..9: X____00003;\n\
58
var 1..9: X____00004;\n\
59
var 1..9: X____00005;\n\
60
var 1..9: X____00006;\n\
61
var 1..9: X____00007;\n\
62
var 1..9: X____00008;\n\
63
var 1..9: X____00009;\n\
64
var 1..9: X____00010;\n\
65
var 1..9: X____00011;\n\
66
var 1..9: X____00012;\n\
67
var 1..9: X____00013;\n\
68
var 1..9: X____00014;\n\
69
var 1..9: X____00015;\n\
70
var 1..9: X____00016;\n\
71
var 1..9: X____00017;\n\
72
var 1..9: X____00018;\n\
73
var 1..9: X____00019;\n\
74
var 1..9: X____00020;\n\
75
var 1..9: X____00021;\n\
76
var 1..9: X____00022;\n\
77
var 1..9: X____00023;\n\
78
var 1..9: X____00024;\n\
79
var 1..9: X____00025;\n\
80
var 1..9: X____00026;\n\
81
var 1..9: X____00027;\n\
82
var 1..9: X____00028;\n\
83
var 1..9: X____00029;\n\
84
var 1..9: X____00030;\n\
85
var 1..9: X____00031;\n\
86
var 1..9: X____00032;\n\
87
var 1..9: X____00033;\n\
88
var 1..9: X____00034;\n\
89
var 1..9: X____00035;\n\
90
var 1..9: X____00036;\n\
91
var 1..9: X____00037;\n\
92
var 1..9: X____00038;\n\
93
var 1..9: X____00039;\n\
94
var 1..9: X____00040;\n\
95
var 1..9: X____00041;\n\
96
var 1..9: X____00042;\n\
97
var 1..9: X____00043;\n\
98
var 1..9: X____00044;\n\
99
var 1..9: X____00045;\n\
100
var 1..9: X____00046;\n\
101
var 1..9: X____00047;\n\
102
var 1..9: X____00048;\n\
103
var 1..9: X____00049;\n\
104
var 1..9: X____00050;\n\
105
var 1..9: X____00051;\n\
106
var 1..9: X____00052;\n\
107
var 1..9: X____00053;\n\
108
array [1..81] of var 1..9: puzzle :: output_array([1..9, 1..9]) = [X____00001, X____00002, X____00003, X____00004, X____00005, X____00006, X____00007, X____00008, X____00009, X____00010, 6, 8, 4, X____00011, 1, X____00012, 7, X____00013, X____00014, X____00015, X____00016, X____00017, 8, 5, X____00018, 3, X____00019, X____00020, 2, 6, 8, X____00021, 9, X____00022, 4, X____00023, X____00024, X____00025, 7, X____00026, X____00027, X____00028, 9, X____00029, X____00030, X____00031, 5, X____00032, 1, X____00033, 6, 3, 2, X____00034, X____00035, 4, X____00036, 6, 1, X____00037, X____00038, X____00039, X____00040, X____00041, 3, X____00042, 2, X____00043, 7, 6, 9, X____00044, X____00045, X____00046, X____00047, X____00048, X____00049, X____00050, X____00051, X____00052, X____00053];\n\
109
constraint all_different_int([6, 1, X____00037, 2, X____00043, 7, X____00048, X____00049, X____00050]);\n\
110
constraint all_different_int([8, X____00021, 9, X____00026, X____00027, X____00028, 1, X____00033, 6]);\n\
111
constraint all_different_int([X____00001, X____00002, X____00003, X____00004, X____00005, X____00006, X____00007, X____00008, X____00009]);\n\
112
constraint all_different_int([X____00001, X____00002, X____00003, X____00010, 6, 8, X____00014, X____00015, X____00016]);\n\
113
constraint all_different_int([X____00001, X____00010, X____00014, X____00020, X____00024, X____00031, X____00035, X____00041, X____00045]);\n\
114
constraint all_different_int([X____00002, 6, X____00015, 2, X____00025, 5, 4, 3, X____00046]);\n\
115
constraint all_different_int([X____00003, 8, X____00016, 6, 7, X____00032, X____00036, X____00042, X____00047]);\n\
116
constraint all_different_int([X____00004, 4, X____00017, 8, X____00026, 1, 6, 2, X____00048]);\n\
117
constraint all_different_int([X____00004, X____00005, X____00006, 4, X____00011, 1, X____00017, 8, 5]);\n\
118
constraint all_different_int([X____00005, X____00011, 8, X____00021, X____00027, X____00033, 1, X____00043, X____00049]);\n\
119
constraint all_different_int([X____00006, 1, 5, 9, X____00028, 6, X____00037, 7, X____00050]);\n\
120
constraint all_different_int([X____00007, X____00008, X____00009, X____00012, 7, X____00013, X____00018, 3, X____00019]);\n\
121
constraint all_different_int([X____00007, X____00012, X____00018, X____00022, 9, 3, X____00038, 6, X____00051]);\n\
122
constraint all_different_int([X____00008, 7, 3, 4, X____00029, 2, X____00039, 9, X____00052]);\n\
123
constraint all_different_int([X____00009, X____00013, X____00019, X____00023, X____00030, X____00034, X____00040, X____00044, X____00053]);\n\
124
constraint all_different_int([X____00010, 6, 8, 4, X____00011, 1, X____00012, 7, X____00013]);\n\
125
constraint all_different_int([X____00014, X____00015, X____00016, X____00017, 8, 5, X____00018, 3, X____00019]);\n\
126
constraint all_different_int([X____00020, 2, 6, 8, X____00021, 9, X____00022, 4, X____00023]);\n\
127
constraint all_different_int([X____00020, 2, 6, X____00024, X____00025, 7, X____00031, 5, X____00032]);\n\
128
constraint all_different_int([X____00022, 4, X____00023, 9, X____00029, X____00030, 3, 2, X____00034]);\n\
129
constraint all_different_int([X____00024, X____00025, 7, X____00026, X____00027, X____00028, 9, X____00029, X____00030]);\n\
130
constraint all_different_int([X____00031, 5, X____00032, 1, X____00033, 6, 3, 2, X____00034]);\n\
131
constraint all_different_int([X____00035, 4, X____00036, 6, 1, X____00037, X____00038, X____00039, X____00040]);\n\
132
constraint all_different_int([X____00035, 4, X____00036, X____00041, 3, X____00042, X____00045, X____00046, X____00047]);\n\
133
constraint all_different_int([X____00038, X____00039, X____00040, 6, 9, X____00044, X____00051, X____00052, X____00053]);\n\
134
constraint all_different_int([X____00041, 3, X____00042, 2, X____00043, 7, 6, 9, X____00044]);\n\
135
constraint all_different_int([X____00045, X____00046, X____00047, X____00048, X____00049, X____00050, X____00051, X____00052, X____00053]);\n\
136
solve satisfy;\n\
137
"
,
"puzzle = array2d(1..9, 1..9, [5, 9, 3, 7, 6, 2, 8, 1, 4, 2, 6, 8, 4, 3, 1, 5, 7, 9, 7, 1, 4, 9, 8, 5, 2, 3, 6, 3, 2, 6, 8, 5, 9, 1, 4, 7, 1, 8, 7, 3, 2, 4, 9, 6, 5, 4, 5, 9, 1, 7, 6, 3, 2, 8, 9, 4, 2, 6, 1, 8, 7, 5, 3, 8, 3, 5, 2, 4, 7, 6, 9, 1, 6, 7, 1, 5, 9, 3, 4, 8, 2]);\n\
138
----------\n\
139
"
);
140
}
141
};
142
143
Create
c
;
144
}
145
146
}}
147
148
// STATISTICS: test-flatzinc
Test
General test support.
Definition:
afc.cpp:43
Test::Float::Arithmetic::c
Gecode::FloatVal c(-8, 8)
flatzinc.hh