diff options
author | kaiwu <kaiwu2004@gmail.com> | 2022-04-14 22:42:10 +0800 |
---|---|---|
committer | kaiwu <kaiwu2004@gmail.com> | 2022-04-14 22:42:10 +0800 |
commit | 5221877e962e70625921c2084c8a42996050aa94 (patch) | |
tree | 3f51aba7202744ca44ad6be24b18ee6b7125baed /src/2016/day6/aoc.cpp | |
parent | 9dcf63c0a3c8cfd0b1c1d6b335d38524775cd933 (diff) | |
download | advent-of-code-5221877e962e70625921c2084c8a42996050aa94.tar.gz advent-of-code-5221877e962e70625921c2084c8a42996050aa94.zip |
2016 2017 day6
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; } } |