- commit
- 6af372228cc5f33a27d4867774f288dcde5b873f
- parent
- 4145d262ff46a69a594b7caaf557188c8ae3879e
- Author
- Tobias Bengfort <tobias.bengfort@posteo.de>
- Date
- 2022-12-14 07:23
perf: reuse previous path
Diffstat
| M | 2022/14/solution.rs | 18 | ++++++++++-------- |
1 files changed, 10 insertions, 8 deletions
diff --git a/2022/14/solution.rs b/2022/14/solution.rs
@@ -47,11 +47,12 @@ fn main() {
47 47
48 48 render(&blocked);
49 49
-1 50 let mut path = vec![(500, 0)];
50 51 let mut count = 0;
51 52 let mut part1 = true;
52 -1 loop {
53 -1 let mut x = 500;
54 -1 let mut y = 0;
-1 53
-1 54 while path.len() > 0 {
-1 55 let (mut x, mut y) = path.pop().unwrap();
55 56 loop {
56 57 if y == max_y + 1 {
57 58 if part1 {
@@ -63,11 +64,14 @@ fn main() {
63 64 count += 1;
64 65 break;
65 66 } else if !blocked.contains(&(x, y + 1)) {
-1 67 path.push((x, y));
66 68 y += 1;
67 69 } else if !blocked.contains(&(x - 1, y + 1)) {
-1 70 path.push((x, y));
68 71 x -= 1;
69 72 y += 1;
70 73 } else if !blocked.contains(&(x + 1, y + 1)) {
-1 74 path.push((x, y));
71 75 x += 1;
72 76 y += 1;
73 77 } else {
@@ -76,10 +80,8 @@ fn main() {
76 80 break;
77 81 }
78 82 }
79 -1 if (x, y) == (500, 0) {
80 -1 render(&blocked);
81 -1 println!("part2: {}", count);
82 -1 break;
83 -1 }
84 83 }
-1 84
-1 85 render(&blocked);
-1 86 println!("part2: {}", count);
85 87 }