diff options
Diffstat (limited to 'src/2016/day6/aoc.cpp')
-rw-r--r-- | src/2016/day6/aoc.cpp | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/src/2016/day6/aoc.cpp b/src/2016/day6/aoc.cpp index 521ca55..02478fd 100644 --- a/src/2016/day6/aoc.cpp +++ b/src/2016/day6/aoc.cpp @@ -6,20 +6,26 @@ struct counter { int az[26] = {0}; void add(char c) { az[c - 'a'] += 1; } - char most() { + std::pair<char, char> minmax() const noexcept { int max{INT32_MIN}; - int index{0}; + int min{INT32_MAX}; + int i1{0}; + int i2{0}; for (int i = 0; i < 26; i++) { - if (az[i] > max) { + if (az[i] > 0 && az[i] > max) { max = az[i]; - index = i; + i1 = i; + } + if (az[i] > 0 && az[i] < min) { + min = az[i]; + i2 = i; } } - return 'a' + index; + return {'a' + i1, 'a' + i2}; } }; -void day6(line_view file, char msg[]) { +void day6(line_view file, char msg1[], char msg2[]) { counter cs[8]; per_line(file, [&cs](line_view lv) { const char* p = lv.line; @@ -34,7 +40,9 @@ void day6(line_view file, char msg[]) { }); for (size_t i = 0; i < ARRAY_SIZE(cs); i++) { - msg[i] = cs[i].most(); + auto p = cs[i].minmax(); + msg1[i] = p.first; + msg2[i] = p.second; } } |