Generated on Tue May 22 09:39:39 2018 for Gecode by doxygen 1.6.3

sudoku.cpp

Go to the documentation of this file.
00001 /* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
00002 /*
00003  *  Main authors:
00004  *     Guido Tack <tack@gecode.org>
00005  *
00006  *  Copyright:
00007  *     Guido Tack, 2014
00008  *
00009  *  This file is part of Gecode, the generic constraint
00010  *  development environment:
00011  *     http://www.gecode.org
00012  *
00013  *  Permission is hereby granted, free of charge, to any person obtaining
00014  *  a copy of this software and associated documentation files (the
00015  *  "Software"), to deal in the Software without restriction, including
00016  *  without limitation the rights to use, copy, modify, merge, publish,
00017  *  distribute, sublicense, and/or sell copies of the Software, and to
00018  *  permit persons to whom the Software is furnished to do so, subject to
00019  *  the following conditions:
00020  *
00021  *  The above copyright notice and this permission notice shall be
00022  *  included in all copies or substantial portions of the Software.
00023  *
00024  *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
00025  *  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
00026  *  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
00027  *  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
00028  *  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
00029  *  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
00030  *  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
00031  *
00032  */
00033 
00034 #include "test/flatzinc.hh"
00035 
00036 namespace Test { namespace FlatZinc {
00037 
00038   namespace {
00040     class Create {
00041     public:
00042 
00044       Create(void) {
00045         (void) new FlatZincTest("sudoku",
00046 "predicate all_different_int(array [int] of var int: x);\n\
00047 predicate bool_lin_ge(array [int] of int: a, array [int] of var bool: x, var int: c);\n\
00048 predicate bool_lin_gt(array [int] of int: a, array [int] of var bool: x, var int: c);\n\
00049 predicate bool_lin_lt(array [int] of int: a, array [int] of var bool: x, var int: c);\n\
00050 predicate bool_lin_ne(array [int] of int: a, array [int] of var bool: x, var int: c);\n\
00051 var 1..9: X____00001;\n\
00052 var 1..9: X____00002;\n\
00053 var 1..9: X____00003;\n\
00054 var 1..9: X____00004;\n\
00055 var 1..9: X____00005;\n\
00056 var 1..9: X____00006;\n\
00057 var 1..9: X____00007;\n\
00058 var 1..9: X____00008;\n\
00059 var 1..9: X____00009;\n\
00060 var 1..9: X____00010;\n\
00061 var 1..9: X____00011;\n\
00062 var 1..9: X____00012;\n\
00063 var 1..9: X____00013;\n\
00064 var 1..9: X____00014;\n\
00065 var 1..9: X____00015;\n\
00066 var 1..9: X____00016;\n\
00067 var 1..9: X____00017;\n\
00068 var 1..9: X____00018;\n\
00069 var 1..9: X____00019;\n\
00070 var 1..9: X____00020;\n\
00071 var 1..9: X____00021;\n\
00072 var 1..9: X____00022;\n\
00073 var 1..9: X____00023;\n\
00074 var 1..9: X____00024;\n\
00075 var 1..9: X____00025;\n\
00076 var 1..9: X____00026;\n\
00077 var 1..9: X____00027;\n\
00078 var 1..9: X____00028;\n\
00079 var 1..9: X____00029;\n\
00080 var 1..9: X____00030;\n\
00081 var 1..9: X____00031;\n\
00082 var 1..9: X____00032;\n\
00083 var 1..9: X____00033;\n\
00084 var 1..9: X____00034;\n\
00085 var 1..9: X____00035;\n\
00086 var 1..9: X____00036;\n\
00087 var 1..9: X____00037;\n\
00088 var 1..9: X____00038;\n\
00089 var 1..9: X____00039;\n\
00090 var 1..9: X____00040;\n\
00091 var 1..9: X____00041;\n\
00092 var 1..9: X____00042;\n\
00093 var 1..9: X____00043;\n\
00094 var 1..9: X____00044;\n\
00095 var 1..9: X____00045;\n\
00096 var 1..9: X____00046;\n\
00097 var 1..9: X____00047;\n\
00098 var 1..9: X____00048;\n\
00099 var 1..9: X____00049;\n\
00100 var 1..9: X____00050;\n\
00101 var 1..9: X____00051;\n\
00102 var 1..9: X____00052;\n\
00103 var 1..9: X____00053;\n\
00104 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\
00105 constraint all_different_int([6, 1, X____00037, 2, X____00043, 7, X____00048, X____00049, X____00050]);\n\
00106 constraint all_different_int([8, X____00021, 9, X____00026, X____00027, X____00028, 1, X____00033, 6]);\n\
00107 constraint all_different_int([X____00001, X____00002, X____00003, X____00004, X____00005, X____00006, X____00007, X____00008, X____00009]);\n\
00108 constraint all_different_int([X____00001, X____00002, X____00003, X____00010, 6, 8, X____00014, X____00015, X____00016]);\n\
00109 constraint all_different_int([X____00001, X____00010, X____00014, X____00020, X____00024, X____00031, X____00035, X____00041, X____00045]);\n\
00110 constraint all_different_int([X____00002, 6, X____00015, 2, X____00025, 5, 4, 3, X____00046]);\n\
00111 constraint all_different_int([X____00003, 8, X____00016, 6, 7, X____00032, X____00036, X____00042, X____00047]);\n\
00112 constraint all_different_int([X____00004, 4, X____00017, 8, X____00026, 1, 6, 2, X____00048]);\n\
00113 constraint all_different_int([X____00004, X____00005, X____00006, 4, X____00011, 1, X____00017, 8, 5]);\n\
00114 constraint all_different_int([X____00005, X____00011, 8, X____00021, X____00027, X____00033, 1, X____00043, X____00049]);\n\
00115 constraint all_different_int([X____00006, 1, 5, 9, X____00028, 6, X____00037, 7, X____00050]);\n\
00116 constraint all_different_int([X____00007, X____00008, X____00009, X____00012, 7, X____00013, X____00018, 3, X____00019]);\n\
00117 constraint all_different_int([X____00007, X____00012, X____00018, X____00022, 9, 3, X____00038, 6, X____00051]);\n\
00118 constraint all_different_int([X____00008, 7, 3, 4, X____00029, 2, X____00039, 9, X____00052]);\n\
00119 constraint all_different_int([X____00009, X____00013, X____00019, X____00023, X____00030, X____00034, X____00040, X____00044, X____00053]);\n\
00120 constraint all_different_int([X____00010, 6, 8, 4, X____00011, 1, X____00012, 7, X____00013]);\n\
00121 constraint all_different_int([X____00014, X____00015, X____00016, X____00017, 8, 5, X____00018, 3, X____00019]);\n\
00122 constraint all_different_int([X____00020, 2, 6, 8, X____00021, 9, X____00022, 4, X____00023]);\n\
00123 constraint all_different_int([X____00020, 2, 6, X____00024, X____00025, 7, X____00031, 5, X____00032]);\n\
00124 constraint all_different_int([X____00022, 4, X____00023, 9, X____00029, X____00030, 3, 2, X____00034]);\n\
00125 constraint all_different_int([X____00024, X____00025, 7, X____00026, X____00027, X____00028, 9, X____00029, X____00030]);\n\
00126 constraint all_different_int([X____00031, 5, X____00032, 1, X____00033, 6, 3, 2, X____00034]);\n\
00127 constraint all_different_int([X____00035, 4, X____00036, 6, 1, X____00037, X____00038, X____00039, X____00040]);\n\
00128 constraint all_different_int([X____00035, 4, X____00036, X____00041, 3, X____00042, X____00045, X____00046, X____00047]);\n\
00129 constraint all_different_int([X____00038, X____00039, X____00040, 6, 9, X____00044, X____00051, X____00052, X____00053]);\n\
00130 constraint all_different_int([X____00041, 3, X____00042, 2, X____00043, 7, 6, 9, X____00044]);\n\
00131 constraint all_different_int([X____00045, X____00046, X____00047, X____00048, X____00049, X____00050, X____00051, X____00052, X____00053]);\n\
00132 solve satisfy;\n\
00133 ", "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\
00134 ----------\n\
00135 ");
00136       }
00137     };
00138 
00139     Create c;
00140   }
00141 
00142 }}
00143 
00144 // STATISTICS: test-flatzinc