aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorkaiwu <kaiwu2004@gmail.com>2022-04-17 23:20:26 +0800
committerkaiwu <kaiwu2004@gmail.com>2022-04-17 23:20:26 +0800
commitd52b5d98d379b7f0c64746f729a3491b8e163e11 (patch)
treed0419cad2d6c3d99fdc4326d1883728d7a7ac143 /src
parentcdafa16d744a0ad8b240d9a6f63097147e91dfba (diff)
downloadadvent-of-code-d52b5d98d379b7f0c64746f729a3491b8e163e11.tar.gz
advent-of-code-d52b5d98d379b7f0c64746f729a3491b8e163e11.zip
2021 day6
Diffstat (limited to 'src')
-rw-r--r--src/2021/day6/aoc.cpp41
-rw-r--r--src/2021/day6/aoc.h3
2 files changed, 40 insertions, 4 deletions
diff --git a/src/2021/day6/aoc.cpp b/src/2021/day6/aoc.cpp
index 98ece02..c8e3673 100644
--- a/src/2021/day6/aoc.cpp
+++ b/src/2021/day6/aoc.cpp
@@ -31,11 +31,46 @@ size_t day6(int i, int days) {
return v.size();
}
+// i = 0, 1, 2, 3, 4, 5, 6, 7, 8
+void lanternfish(int i, int days, size_t* total) {
+ // printf("(%d, %d)\n", i, days);
+ int x = days - i - 1;
+ *total += 1;
+ while (x >= 0) {
+ lanternfish(8, x, total);
+ x -= 7;
+ }
+}
+
+//-> 0 : 1421
+//-> 1 : 1401
+//-> 2 : 1191
+//-> 3 : 1154
+//-> 4 : 1034
+//-> 5 : 950
+//-> 6 : 905
+//-> 0 : 6703087164
+//-> 1 : 6206821033
+//-> 2 : 5617089148
+//-> 3 : 5217223242
+//-> 4 : 4726100874
+//-> 5 : 4368232009
+//-> 6 : 3989468462
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]);
+ if (days == 256) {
+ ns[0] = 6703087164;
+ ns[1] = 6206821033;
+ ns[2] = 5617089148;
+ ns[3] = 5217223242;
+ ns[4] = 4726100874;
+ ns[5] = 4368232009;
+ ns[6] = 3989468462;
+ } else {
+ for (int i : {0, 1, 2, 3, 4, 5, 6}) {
+ lanternfish(i, days, &ns[i]);
+ // printf("--> %d : %zu\n", i, ns[i]);
+ }
}
size_t total{0};
diff --git a/src/2021/day6/aoc.h b/src/2021/day6/aoc.h
index 6c02437..7165ce6 100644
--- a/src/2021/day6/aoc.h
+++ b/src/2021/day6/aoc.h
@@ -4,5 +4,6 @@
namespace aoc2021 {
size_t day6(int, int);
+void lanternfish(int i, int days, size_t* total);
size_t day6(line_view, int);
-}
+} // namespace aoc2021