aboutsummaryrefslogtreecommitdiff
path: root/src/2022/day3/aoc.cpp
blob: 9be1bf05dd4d3be9875fc1bbfeb97f77e237c010 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include "aoc.h"
#include <algorithm>
#include <vector>

namespace aoc2022 {
std::pair<int, int> day3(line_view file) {
  int s2{0}, s3{0};
  int g{0};
  rucksacks r3;
  per_line(file, [&s2, &s3, &g, &r3](line_view lv) {
    int i = g++ % 3;
    if (i == 0) {
      r3.reset();
    }
    rucksacks r2;
    r2.load(lv);
    s2 += r2.score();

    r3.load(lv, i);
    if (i == 2) {
      s3 += r3.score3();
    }
    return true;
  });

  return {s2, s3};
}

} // namespace aoc2022