this repo has no description
at develop 4.9 kB view raw
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 * This file is part of Gecode, the generic constraint 10 * development environment: 11 * http://www.gecode.org 12 * 13 * Permission is hereby granted, free of charge, to any person obtaining 14 * a copy of this software and associated documentation files (the 15 * "Software"), to deal in the Software without restriction, including 16 * without limitation the rights to use, copy, modify, merge, publish, 17 * distribute, sublicense, and/or sell copies of the Software, and to 18 * permit persons to whom the Software is furnished to do so, subject to 19 * the following conditions: 20 * 21 * The above copyright notice and this permission notice shall be 22 * included in all copies or substantial portions of the Software. 23 * 24 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 25 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 26 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 27 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 28 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 29 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 30 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 31 * 32 */ 33 34#include "test/flatzinc.hh" 35 36namespace Test { namespace FlatZinc { 37 38 namespace { 39 /// Helper class to create and register tests 40 class Create { 41 public: 42 43 /// Perform creation and registration 44 Create(void) { 45 (void) new FlatZincTest("queens::cp2", 46"predicate all_different_int(array [int] of var int: x);\n\ 47predicate bool_lin_ge(array [int] of int: a, array [int] of var bool: x, var int: c);\n\ 48predicate bool_lin_gt(array [int] of int: a, array [int] of var bool: x, var int: c);\n\ 49predicate bool_lin_lt(array [int] of int: a, array [int] of var bool: x, var int: c);\n\ 50predicate bool_lin_ne(array [int] of int: a, array [int] of var bool: x, var int: c);\n\ 51var 2..9: INT____00001 :: is_defined_var :: var_is_introduced;\n\ 52var 3..10: INT____00002 :: is_defined_var :: var_is_introduced;\n\ 53var 4..11: INT____00003 :: is_defined_var :: var_is_introduced;\n\ 54var 5..12: INT____00004 :: is_defined_var :: var_is_introduced;\n\ 55var 6..13: INT____00005 :: is_defined_var :: var_is_introduced;\n\ 56var 7..14: INT____00006 :: is_defined_var :: var_is_introduced;\n\ 57var 8..15: INT____00007 :: is_defined_var :: var_is_introduced;\n\ 58var 8..15: INT____00008 :: is_defined_var :: var_is_introduced;\n\ 59var 7..14: INT____00009 :: is_defined_var :: var_is_introduced;\n\ 60var 6..13: INT____00010 :: is_defined_var :: var_is_introduced;\n\ 61var 5..12: INT____00011 :: is_defined_var :: var_is_introduced;\n\ 62var 4..11: INT____00012 :: is_defined_var :: var_is_introduced;\n\ 63var 3..10: INT____00013 :: is_defined_var :: var_is_introduced;\n\ 64var 2..9: INT____00014 :: is_defined_var :: var_is_introduced;\n\ 65array [1..8] of var 1..8: q :: output_array([1..8]);\n\ 66constraint all_different_int([INT____00008, INT____00009, INT____00010, INT____00011, INT____00012, INT____00013, INT____00014, q[8]]);\n\ 67constraint all_different_int([q[1], INT____00001, INT____00002, INT____00003, INT____00004, INT____00005, INT____00006, INT____00007]);\n\ 68constraint all_different_int(q);\n\ 69constraint int_lin_eq([-1, 1], [INT____00001, q[2]], -1) :: defines_var(INT____00001);\n\ 70constraint int_lin_eq([-1, 1], [INT____00002, q[3]], -2) :: defines_var(INT____00002);\n\ 71constraint int_lin_eq([-1, 1], [INT____00003, q[4]], -3) :: defines_var(INT____00003);\n\ 72constraint int_lin_eq([-1, 1], [INT____00004, q[5]], -4) :: defines_var(INT____00004);\n\ 73constraint int_lin_eq([-1, 1], [INT____00005, q[6]], -5) :: defines_var(INT____00005);\n\ 74constraint int_lin_eq([-1, 1], [INT____00006, q[7]], -6) :: defines_var(INT____00006);\n\ 75constraint int_lin_eq([-1, 1], [INT____00007, q[8]], -7) :: defines_var(INT____00007);\n\ 76constraint int_lin_eq([-1, 1], [INT____00008, q[1]], -7) :: defines_var(INT____00008);\n\ 77constraint int_lin_eq([-1, 1], [INT____00009, q[2]], -6) :: defines_var(INT____00009);\n\ 78constraint int_lin_eq([-1, 1], [INT____00010, q[3]], -5) :: defines_var(INT____00010);\n\ 79constraint int_lin_eq([-1, 1], [INT____00011, q[4]], -4) :: defines_var(INT____00011);\n\ 80constraint int_lin_eq([-1, 1], [INT____00012, q[5]], -3) :: defines_var(INT____00012);\n\ 81constraint int_lin_eq([-1, 1], [INT____00013, q[6]], -2) :: defines_var(INT____00013);\n\ 82constraint int_lin_eq([-1, 1], [INT____00014, q[7]], -1) :: defines_var(INT____00014);\n\ 83solve :: int_search(q, first_fail, indomain_min, complete) satisfy;\n\ 84", "q = array1d(1..8, [1, 5, 8, 6, 3, 7, 2, 4]);\n\ 85----------\n\ 86"); 87 } 88 }; 89 90 Create c; 91 } 92 93}} 94 95// STATISTICS: test-flatzinc