diff --git a/reg3.cpp b/reg3.cpp index 2d933086..b3729db2 100644 --- a/reg3.cpp +++ b/reg3.cpp @@ -918,9 +918,12 @@ EX namespace reg3 { auto &nles = nonlooping_earlier_states; nles.clear(); vector
bfs; - for(int i=0; iallh); i++) + int qty = isize(quotient_map->allh); + if(geometry == gSpace535) qty = 1; + for(int i=0; iallh[fv]->move(d)->fieldval; }; int qstate = isize(children) / S7; @@ -946,7 +949,7 @@ EX namespace reg3 { DEBB(DF_GEOM, ("q2 = ", q2)); bfs = {}; - for(int i=0; iallh); i++) + for(int i=0; i evmemo; void find_emeraldval(heptagon *target, heptagon *parent, int d) { + if(geometry == gSpace535) { + target->emeraldval = target->fieldval; + target->zebraval = 0; + return; + } auto& cr = cgi.cellrotations; if(evmemo.empty()) { println(hlog, "starting"); @@ -1110,7 +1118,9 @@ EX namespace reg3 { res->fieldval = fv; res->distance = parent->distance - 1; vector possible; - for(auto s: nonlooping_earlier_states[{int(parent->fieldval), id}]) possible.push_back(s.second); + int pfv = parent->fieldval; + if(geometry == gSpace535) pfv = 0; + for(auto s: nonlooping_earlier_states[{pfv, id}]) possible.push_back(s.second); id1 = hrand_elt(possible, 0); res->fiftyval = id1; find_emeraldval(res, parent, d); @@ -1197,13 +1207,14 @@ EX hrmap *new_alt_map(heptagon *o) { EX void link_structures(heptagon *h, heptagon *alt, hstate firststate) { auto cm = (hrmap_reg3_rule*) currentmap; alt->fieldval = h->fieldval; + if(geometry == gSpace535) alt->fieldval = 0; if(firststate == hsOrigin) { alt->fiftyval = cm->root[alt->fieldval]; return; } vector choices; for(auto p: cm->nonlooping_earlier_states) - if(p.first.first == h->fieldval) + if(p.first.first == alt->fieldval) choices.push_back(p.first.second); vector choices2; for(auto c: choices) { @@ -1214,7 +1225,7 @@ EX void link_structures(heptagon *h, heptagon *alt, hstate firststate) { ok = false; if(ok) choices2.push_back(c); } - alt->fiftyval = hrand_elt(choices, -1); + alt->fiftyval = hrand_elt(choices2, -1); } EX bool reg3_rule_available = true;