Skip to content

Commit 9adc5c5

Browse files
committed
Improve day06b
1 parent 4be0287 commit 9adc5c5

File tree

2 files changed

+13
-14
lines changed

2 files changed

+13
-14
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ scientifically) in [`bench.rs`](./runner/src/bin/bench.rs) on an
2525
| [day 3](https://adventofcode.com/2022/day/3) | [` 0.015 ms`](./day03a/src/main.rs) | [` 0.016 ms`](./day03b/src/main.rs) |
2626
| [day 4](https://adventofcode.com/2022/day/4) | [` 0.040 ms`](./day04a/src/main.rs) | [` 0.039 ms`](./day04b/src/main.rs) |
2727
| [day 5](https://adventofcode.com/2022/day/5) | [` 0.020 ms`](./day05a/src/main.rs) | [` 0.019 ms`](./day05b/src/main.rs) |
28-
| [day 6](https://adventofcode.com/2022/day/6) | [` 0.001 ms`](./day06a/src/main.rs) | [` 720 ns`](./day06b/src/main.rs) |
28+
| [day 6](https://adventofcode.com/2022/day/6) | [` 0.001 ms`](./day06a/src/main.rs) | [` 550 ns`](./day06b/src/main.rs) |
2929
| [day 7](https://adventofcode.com/2022/day/7) | [` 0.008 ms`](./day07a/src/main.rs) | [` 0.011 ms`](./day07b/src/main.rs) |
3030
| [day 8](https://adventofcode.com/2022/day/8) | [` 0.045 ms`](./day08a/src/main.rs) | [` 0.177 ms`](./day08b/src/main.rs) |
3131
| [day 9](https://adventofcode.com/2022/day/9) | [` 0.120 ms`](./day09a/src/main.rs) | [` 0.290 ms`](./day09b/src/main.rs) |

day06b/src/main.rs

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,18 @@
11
pub fn main() {
2-
let d = include_bytes!("../input.txt");
3-
4-
let mut w = 0;
5-
'main: loop {
2+
let mut i = 0;
3+
while let Some(win) = include_bytes!("../input.txt").get(i..i + 14) {
64
let mut seen = 0u32;
7-
for i in (0..=13).rev() {
8-
let mask = 1 << d[w + i] - b'a';
9-
if seen & mask == mask {
10-
w += i + 1;
11-
continue 'main;
12-
}
13-
seen |= mask;
5+
if let Some(pos) = win.iter().rposition(|b| {
6+
let bit = 1 << (b % 32);
7+
let duplicate = seen & bit != 0;
8+
seen |= bit;
9+
duplicate
10+
}) {
11+
i += pos + 1;
12+
} else {
13+
break;
1414
}
15-
break;
1615
}
1716

18-
println!("{}", w + 14);
17+
println!("{}", i);
1918
}

0 commit comments

Comments
 (0)