diff options
author | kaiwu <kaiwu2004@gmail.com> | 2022-12-14 17:39:30 +0800 |
---|---|---|
committer | kaiwu <kaiwu2004@gmail.com> | 2022-12-14 17:39:30 +0800 |
commit | 0b9455faebaf32549f0524a93d24bcadb06dfc24 (patch) | |
tree | 95c5da86830b3d9a54f38a84b41b324d24fb68fe /src/2022/day14/aoc.cpp | |
parent | 216aab22ad4fa72b37530d1e380bf3c5e179dc73 (diff) | |
download | advent-of-code-0b9455faebaf32549f0524a93d24bcadb06dfc24.tar.gz advent-of-code-0b9455faebaf32549f0524a93d24bcadb06dfc24.zip |
2022 day14 part1
Diffstat (limited to 'src/2022/day14/aoc.cpp')
-rw-r--r-- | src/2022/day14/aoc.cpp | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/src/2022/day14/aoc.cpp b/src/2022/day14/aoc.cpp index a96877d..00bc0c8 100644 --- a/src/2022/day14/aoc.cpp +++ b/src/2022/day14/aoc.cpp @@ -3,6 +3,29 @@ namespace aoc2022 { rock::three rock::t3; +int fall1(cave& cv) { + bool fall{true}; + int n{0}; + while(fall) { + auto p = cv.drop(cv.to({500,0})); + rock::pos ns[] = {{p.x, p.y + 1}, {p.x - 1, p.y + 1}, {p.x + 1, p.y + 1}}; + for (int i = 0; i < 3; i++) { + if (!cv.valid(ns[i])) { + fall = false; + } + } + if (fall) { + cv.get(p) = 'o'; + n++; + } + } + return n; +} + +int fall2(cave& cv) { + return 0; +} + std::pair<int, int> day14(line_view file) { std::vector<rock> rocks; per_line(file, [&rocks](line_view lv){ @@ -17,8 +40,8 @@ std::pair<int, int> day14(line_view file) { cv.mark(r); } - // cv.print(); - return {0, 0}; + cave cv2{cv}; + return {fall1(cv), fall2(cv2)}; } } |