diff --git a/src/tools/counter_symsi.cpp b/src/tools/counter_symsi.cpp index 3340f35..dca21f7 100644 --- a/src/tools/counter_symsi.cpp +++ b/src/tools/counter_symsi.cpp @@ -30,33 +30,78 @@ main(int argc, char** argv) } int n = std::stoi(argv[1]); + int N = 16*n+16; - Game game(2+n*2); + Game game(2+n*10); game.vec_init(); - /* create n+1 pieces */ + /* create n pieces */ for (int i=0; i=1) { - game.vec_add_edge(2*i+0, 0); - game.vec_add_edge(2*i+1, 1); - } + int a = 10*i+0; + int d = 10*i+1; + int c = 10*i+2; + int e = 10*i+3; + int m = 10*i+4; + int f = 10*i+5; + int g = 10*i+6; + int k = 10*i+7; + int h = 10*i+8; + int l = 10*i+9; + + game.vec_add_edge(a, c); + game.vec_add_edge(d, h); + game.vec_add_edge(c, e); + game.vec_add_edge(c, m); + game.vec_add_edge(c, 0); + game.vec_add_edge(m, f); + game.vec_add_edge(m, c); + game.vec_add_edge(m, 0); + game.vec_add_edge(g, k); + game.vec_add_edge(g, h); + game.vec_add_edge(g, 1); + game.vec_add_edge(h, l); + game.vec_add_edge(h, g); + game.vec_add_edge(h, 1); + game.vec_add_edge(e, m); + game.vec_add_edge(e, a+10); + game.vec_add_edge(f, c); + game.vec_add_edge(f, d+10); + game.vec_add_edge(k, h); + game.vec_add_edge(k, a+10); + game.vec_add_edge(l, g); + game.vec_add_edge(l, d+10); } + game.vec_add_edge(10*n, 10*n); + game.vec_add_edge(10*n+1, 10*n); + game.vec_finish(); game.write_pgsolver(std::cout); }