diff options
author | kaiwu <kaiwu2004@gmail.com> | 2022-04-17 23:20:26 +0800 |
---|---|---|
committer | kaiwu <kaiwu2004@gmail.com> | 2022-04-17 23:20:26 +0800 |
commit | d52b5d98d379b7f0c64746f729a3491b8e163e11 (patch) | |
tree | d0419cad2d6c3d99fdc4326d1883728d7a7ac143 /src | |
parent | cdafa16d744a0ad8b240d9a6f63097147e91dfba (diff) | |
download | advent-of-code-d52b5d98d379b7f0c64746f729a3491b8e163e11.tar.gz advent-of-code-d52b5d98d379b7f0c64746f729a3491b8e163e11.zip |
2021 day6
Diffstat (limited to 'src')
-rw-r--r-- | src/2021/day6/aoc.cpp | 41 | ||||
-rw-r--r-- | src/2021/day6/aoc.h | 3 |
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 |