From 40792a3aa1a7dde0d3a2e8de0e89cc7b94d9d3be Mon Sep 17 00:00:00 2001 From: Zeno Rogue Date: Fri, 20 Aug 2021 00:44:24 +0200 Subject: [PATCH] faster get_side hard case --- rulegen.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/rulegen.cpp b/rulegen.cpp index edffc8a8..3f03ce3f 100644 --- a/rulegen.cpp +++ b/rulegen.cpp @@ -852,10 +852,16 @@ int get_side(twalker what) { debuglist = {what, to_what, wl, wr}; throw rulegen_failure("xsidefreeze"); } - treewalk(wl, -1); - treewalk(wr, +1); - if(wl == to_what) return sidecache[what] = +1; - if(wr == to_what) return sidecache[what] = -1; + bool gl = wl.at->dist <= wr.at->dist; + bool gr = wl.at->dist >= wr.at->dist; + if(gl) { + treewalk(wl, -1); + if(wl == to_what) return sidecache[what] = +1; + } + if(gr) { + treewalk(wr, +1); + if(wr == to_what) return sidecache[what] = -1; + } } }