From 1c4aa3e71c51c341d22bd3be72051f8f19f564a4 Mon Sep 17 00:00:00 2001 From: Zeno Rogue Date: Fri, 19 Aug 2022 17:43:16 +0200 Subject: [PATCH] rulegen3:: removed the r3_neighborhood system --- rulegen.cpp | 16 +--------- rulegen3.cpp | 88 ---------------------------------------------------- 2 files changed, 1 insertion(+), 103 deletions(-) diff --git a/rulegen.cpp b/rulegen.cpp index fa31ec0f..6fa22af7 100644 --- a/rulegen.cpp +++ b/rulegen.cpp @@ -97,9 +97,6 @@ static const flagtype w_ignore_transducer_dist = Flag(37); /*< ignore distance e /** these control the output */ EX flagtype rdebug_flags; -EX int r3_neighborhood_decision = 1; /* how far to build local for honeycombs, for decision trees */ -EX int r3_neighborhood_validate = 0; /* how far to build local for honeycombs, for validation */ - EX flagtype flags = 0; EX int64_t movecount; @@ -1368,15 +1365,7 @@ EX void id_at_spin(twalker cw, vector& sprawl, vector& a = alloc_analyzer(); } states.push_back(a); - if(WDIM == 3 && r3_neighborhood_decision) { - auto& ae = get_decision_neighborhood(cw); - int id = isize(sprawl); - if(id < isize(ae)) { - a->id = ae[id].first; - a->dir = ae[id].second; - } - } - else if(isize(sprawl) <= cw.at->type) { + if(isize(sprawl) <= cw.at->type) { a->id = 0, a->dir = isize(sprawl)-1; // println(hlog, "need to go in direction ", a->dir); } @@ -1408,7 +1397,6 @@ EX pair get_code(twalker& cw) { } be_solid(c); - if(WDIM == 3) validate_neighborhood(cw.at); twalker cd = c->dist == 0 ? twalker(c, 0) : get_parent_dir(cw); if(cd.at != c) ufind(cw); @@ -2511,8 +2499,6 @@ auto hooks = addHook(hooks_configfile, 100, [] { param_i(max_ignore_level_post, "max_ignore_level_post"); param_i(max_ignore_time_pre, "max_ignore_time_pre"); param_i(max_ignore_time_post, "max_ignore_time_post"); - param_i(r3_neighborhood_decision, "r3_neighborhood_decision"); - param_i(r3_neighborhood_validate, "r3_neighborhood_validate"); }); EX void parse_treestate(arb::arbi_tiling& c, exp_parser& ep) { diff --git a/rulegen3.cpp b/rulegen3.cpp index 664fc2dc..bb513aef 100644 --- a/rulegen3.cpp +++ b/rulegen3.cpp @@ -145,92 +145,6 @@ EX int get_roadsign(twalker what) { return roadsign_id[result] = next_roadsign_id--; } -#if HDR -using neighborhood = vector>; -#endif - -map, neighborhood> decision_neighborhoods; -map, neighborhood> validate_neighborhoods; - -EX void build_neighborhood(twalker cw, neighborhood& ae, flagtype dec) { - set seen; - vector > visited; - vector > visited1; - vector> ae1; - auto visit = [&] (twalker tw, const transmatrix& T, int id, int dir) { - if(seen.count(tw.at)) return; - seen.insert(tw.at); - auto& sh0 = currentmap->get_cellshape(tcell_to_cell[cw.at]); - auto& sh1 = currentmap->get_cellshape(tcell_to_cell[tw.at]); - int common = 0; - vector kleinized; - vector rotated; - for(auto v: sh0.vertices_only) kleinized.push_back(kleinize(sh0.from_cellcenter * v)); - for(auto w: sh1.vertices_only) rotated.push_back(kleinize(T*sh1.from_cellcenter * w)); - - for(auto v: kleinized) - for(auto w: rotated) - if(sqhypot_d(MDIM, v-w) < 1e-6) - common++; - if(dec & 2) { - if(common < 1) { ae1.emplace_back(id, dir); return; } - } - else { - if(common < 2) { ae1.emplace_back(id, dir); return; } - } - visited.emplace_back(tw, T); - ae.emplace_back(id, dir); - }; - visit(cw, Id, -1, -1); - for(int i=0; itype; j++) { - visit(tw + j + wstep, visited[i].second * currentmap->adj(tcell_to_cell[tw.at], (tw+j).spin), i, j); - } - } - if(dec & 4) { - for(auto p: ae1) ae.push_back(p); - for(auto v: visited1) visited1.push_back(v); - } - if(dec & 8) { - for(int i=0; itype; j++) { - twalker t = visited[i].first + j + wstep; - for(int s=i+1; sid, cw.spin}]; - if(ae.empty()) { - build_neighborhood(cw, ae, r3_neighborhood_decision); - println(hlog, "built decision neighborhood for ", tie(cw.at->id, cw.spin), " of size ", isize(ae)); - } - return ae; - } - -EX neighborhood& get_validate_neighborhood(twalker cw) { - auto& ae = validate_neighborhoods[{cw.at->id, cw.spin}]; - if(ae.empty()) { - build_neighborhood(cw, ae, r3_neighborhood_validate); - println(hlog, "built validate neighborhood for ", tie(cw.at->id, cw.spin), " of size ", isize(ae)); - } - return ae; - } - -EX void validate_neighborhood(twalker cw) { - if(!r3_neighborhood_validate) return; - auto& ae = get_validate_neighborhood(cw); - vector list = { cw }; - for(auto v: ae) if(v.first != -1) - list.push_back(list[v.first] + v.second + wstep); - } - int last_qroad; vector>> possible_parents; @@ -1777,8 +1691,6 @@ void genhoneycomb(string fname) { } EX void cleanup3() { - decision_neighborhoods.clear(); - validate_neighborhoods.clear(); roadsign_id.clear(); rev_roadsign_id.clear(); next_roadsign_id = -100;