aboutsummaryrefslogtreecommitdiff
path: root/src/2016/day6/aoc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/2016/day6/aoc.cpp')
-rw-r--r--src/2016/day6/aoc.cpp22
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;
}
}