aboutsummaryrefslogtreecommitdiff
path: root/src/2021/day6/aoc.cpp
diff options
context:
space:
mode:
authorkaiwu <kaiwu2004@gmail.com>2022-04-17 22:05:44 +0800
committerkaiwu <kaiwu2004@gmail.com>2022-04-17 22:05:44 +0800
commitcdafa16d744a0ad8b240d9a6f63097147e91dfba (patch)
tree17bc4028c70afd97d3bdddcc5849831d21019aae /src/2021/day6/aoc.cpp
parent814ce63def18aef5d28f83eb42c7c35c126a63ae (diff)
downloadadvent-of-code-cdafa16d744a0ad8b240d9a6f63097147e91dfba.tar.gz
advent-of-code-cdafa16d744a0ad8b240d9a6f63097147e91dfba.zip
2021 day6 part1
Diffstat (limited to 'src/2021/day6/aoc.cpp')
-rw-r--r--src/2021/day6/aoc.cpp47
1 files changed, 47 insertions, 0 deletions
diff --git a/src/2021/day6/aoc.cpp b/src/2021/day6/aoc.cpp
index 7a3c895..98ece02 100644
--- a/src/2021/day6/aoc.cpp
+++ b/src/2021/day6/aoc.cpp
@@ -1,5 +1,52 @@
#include "aoc.h"
+#include <algorithm>
+#include <vector>
namespace aoc2021 {
+static void run(int day, std::vector<int>& v) {
+ // std::for_each(v.begin(), v.end(), [](int i) { printf("%d ", i); });
+ // printf(": %zu\n", v.size());
+ if (day > 0) {
+ int count{0};
+ for (auto& i : v) {
+ if (i > 0) {
+ i--;
+ } else {
+ i = 6;
+ count += 1;
+ }
+ }
+ while (count > 0) {
+ v.push_back(8);
+ count--;
+ }
+ run(day - 1, v);
+ }
}
+
+size_t day6(int i, int days) {
+ std::vector<int> v = {i};
+ run(days, v);
+ return v.size();
+}
+
+size_t day6(line_view file, int days) {
+ size_t ns[7] = {0};
+ for (int i : {0, 1, 2, 3, 4, 5, 6}) {
+ ns[i] = day6(i, days);
+ printf("--> %d : %zu\n", i, ns[i]);
+ }
+
+ size_t total{0};
+ const char* p = file.line;
+ while (p < file.line + file.length) {
+ if (*p >= '0' && *p <= '9') {
+ total += ns[*p - '0'];
+ }
+ p++;
+ }
+ return total;
+}
+
+} // namespace aoc2021