diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/2017/day8/aoc.cpp | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/src/2017/day8/aoc.cpp b/src/2017/day8/aoc.cpp index a5af770..b4a9004 100644 --- a/src/2017/day8/aoc.cpp +++ b/src/2017/day8/aoc.cpp @@ -42,16 +42,14 @@ line_view get_label(const char** pp) { static int inc(int x, int i) { return x + i; } static int dec(int x, int i) { return x - i; } static bool condition_met(line_view cond, int x, int i) { - if (cond.length > 1) { - if (*cond.line == '!') { - return x != i; - } - if (*cond.line == '=') { - return x == i; - } - return (*cond.line == '>') ? x >= i : x <= i; + if (*cond.line == '=') { + return x == i; + } + if (*cond.line == '!') { + return x != i; } - return (*cond.line == '>') ? x > i : x < i; + bool bs[] = {x > i, x < i, x >= i, x <= i}; + return bs[size_t(*cond.line == '<') + (cond.length & 2)]; } typedef int (*op)(int, int); |