41 namespace Test {
namespace Int {
59 :
Test(
"Circuit::" +
str(icl) +
"::" +
str(n) +
"::" +
str(off),
60 n,min,max,false,icl), offset(off) {
65 for (
int i=x.
size();
i--; )
66 if ((x[
i] < 0) || (x[
i] > x.
size()-1))
71 for (
int i=x.
size();
i--; ) {
72 j=x[j]; reachable |= (1 << j);
75 for (
int i=x.
size();
i--; )
76 if (!(reachable & (1 <<
i)))
101 :
Test(
"Path::" +
str(icl) +
"::" +
str(n) +
"::" +
str(off),
102 n+2,min,max,false,icl), offset(off) {
107 int n = x.
size() - 2;
110 if ((s < 0) || (s > n) || (e < 0) || (e > n) || (x[e] != n))
113 if ((
i != e) && ((x[
i] < 0) || (x[
i] > n)))
115 int reachable = (1 << s);
118 for (
int i=n;
i--; ) {
119 j=x[j]; reachable |= (1 << j);
123 if (!(reachable & (1 <<
i)))
129 int n = x.
size() - 2;
154 n+1,min,max,false,icl), offset(off) {
161 if ((x[
i] < 0) || (x[
i] > n-1))
166 for (
int i=n;
i--; ) {
167 j=x[j]; reachable |= (1 << j);
171 if (!(reachable & (1 <<
i)))
180 using namespace Gecode;
183 for (
int i=0;
i<
n;
i++)
184 for (
int j=0; j<
n; j++)
192 for (
int i=0;
i<
n;
i++)
208 n+3,min,max,false,icl), offset(off) {
213 int n = x.
size() - 3;
217 if ((s < 0) || (s > n) || (e < 0) || (e > n) || (x[e] != n))
220 if ((
i != e) && ((x[
i] < 0) || (x[
i] > n)))
222 int reachable = (1 << s);
225 for (
int i=n;
i--; ) {
226 j=x[j]; reachable |= (1 << j);
230 if (!(reachable & (1 <<
i)))
238 using namespace Gecode;
241 for (
int i=0;
i<
n;
i++)
242 for (
int j=0; j<
n; j++)
248 path(home, c, offset, y,
249 expr(home, x[n]+offset),
250 expr(home, x[n+1]+offset),
253 for (
int i=0;
i<
n;
i++)
255 path(home, c, y, x[n], x[n+1], x[n+2],
icl);
269 :
Test(
"Circuit::FullCost::" +
str(icl)+
"::"+
str(n)+
"::"+
str(off),
270 2*n+1,min,max,false,icl), offset(off) {
275 int n=(x.
size()-1) / 2;
277 if ((x[
i] < 0) || (x[
i] > n-1))
282 for (
int i=n;
i--; ) {
283 j=x[j]; reachable |= (1 << j);
287 if (!(reachable & (1 <<
i)))
290 if ((x[
i]/2) != x[n+
i])
299 using namespace Gecode;
300 int n=(x.
size()-1)/2;
302 for (
int i=0;
i<
n;
i++)
303 for (
int j=0; j<
n; j++)
306 for (
int i=0;
i<
n;
i++) {
314 for (
int i=0;
i<
n;
i++)
326 for (
int i=1;
i<=6;
i++) {
332 for (
int i=1;
i<=4;
i++) {