diff --git a/arbitrile.cpp b/arbitrile.cpp index 4a5e28f3..184fe6b5 100644 --- a/arbitrile.cpp +++ b/arbitrile.cpp @@ -607,6 +607,7 @@ EX void check_football_colorability(arbi_tiling& c) { auto &co = sh.connections[j]; auto t = sh.football_type; if(c.have_ph && ((sh.flags & arcm::sfPH) != (t==2))) bad = true; + if(sh.apeirogonal && t < 2 && (isize(sh) & 1)) bad = true; auto assign = [&] (int tt) { auto& t1 = c.shapes[co.sid].football_type; @@ -696,7 +697,7 @@ EX void check_football_colorability(arbi_tiling& c) { for(int i=0; i= isize(sh)-2) { + co.sid = ni; + if(t < 2 && (isize(sh) & 1)) co.sid = new_indices[i][t^1]; + continue; + } + co.eid %= oldshapes[co.sid].cycle_length; if(t < 2) { if((j & 1) == t) assign(2); else assign((co.eid & 1) ? 0 : 1); @@ -729,7 +736,7 @@ EX void check_football_colorability(arbi_tiling& c) { } } - if((sh.cycle_length&1) && (t < 2)) sh.cycle_length *= 2; + if((sh.cycle_length&1) && (t < 2) && !sh.apeirogonal) sh.cycle_length *= 2; if(debugflags & DF_GEOM) println(hlog, tie(i,t), " becomes ", ni, " with connections ", sh.connections, " and cycle length = ", sh.cycle_length); }