Add solution for 2022 day 05
This commit is contained in:
parent
5878d30713
commit
0bd5d6a220
4
2022/Cargo.lock
generated
4
2022/Cargo.lock
generated
@ -21,6 +21,10 @@ dependencies = [
|
|||||||
name = "aoc-2022-04"
|
name = "aoc-2022-04"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "aoc-2022-05"
|
||||||
|
version = "0.1.0"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "either"
|
name = "either"
|
||||||
version = "1.8.0"
|
version = "1.8.0"
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
[workspace]
|
[workspace]
|
||||||
members = ["./day-01", "./day-02", "./day-03", "./day-04"]
|
members = ["./day-01", "./day-02", "./day-03", "./day-04", "./day-05"]
|
||||||
|
|
||||||
|
|
||||||
[workspace.package]
|
[workspace.package]
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
| 02 | ✓ | ✓ | [Rust] |
|
| 02 | ✓ | ✓ | [Rust] |
|
||||||
| 03 | ✓ | ✓ | [Rust] |
|
| 03 | ✓ | ✓ | [Rust] |
|
||||||
| 04 | ✓ | ✓ | [Rust] |
|
| 04 | ✓ | ✓ | [Rust] |
|
||||||
| 05 | | | |
|
| 05 | ✓ | ✓ | [Rust] |
|
||||||
| 06 | | | |
|
| 06 | | | |
|
||||||
| 07 | | | |
|
| 07 | | | |
|
||||||
| 08 | | | |
|
| 08 | | | |
|
||||||
|
6
2022/day-05/Cargo.toml
Normal file
6
2022/day-05/Cargo.toml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[package]
|
||||||
|
name = "aoc-2022-05"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
[dependencies]
|
5
2022/day-05/Justfile
Normal file
5
2022/day-05/Justfile
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
@part PART INPUT_FILE="inputs/puzzle.txt":
|
||||||
|
cargo --quiet run --bin part_{{PART}} -- {{INPUT_FILE}}
|
||||||
|
|
||||||
|
clean:
|
||||||
|
cargo clean
|
513
2022/day-05/inputs/puzzle.txt
Normal file
513
2022/day-05/inputs/puzzle.txt
Normal file
@ -0,0 +1,513 @@
|
|||||||
|
[N] [Q] [N]
|
||||||
|
[R] [F] [Q] [G] [M]
|
||||||
|
[J] [Z] [T] [R] [H] [J]
|
||||||
|
[T] [H] [G] [R] [B] [N] [T]
|
||||||
|
[Z] [J] [J] [G] [F] [Z] [S] [M]
|
||||||
|
[B] [N] [N] [N] [Q] [W] [L] [Q] [S]
|
||||||
|
[D] [S] [R] [V] [T] [C] [C] [N] [G]
|
||||||
|
[F] [R] [C] [F] [L] [Q] [F] [D] [P]
|
||||||
|
1 2 3 4 5 6 7 8 9
|
||||||
|
|
||||||
|
move 3 from 9 to 4
|
||||||
|
move 2 from 5 to 2
|
||||||
|
move 8 from 1 to 9
|
||||||
|
move 4 from 7 to 1
|
||||||
|
move 5 from 3 to 8
|
||||||
|
move 3 from 3 to 7
|
||||||
|
move 11 from 8 to 3
|
||||||
|
move 7 from 3 to 6
|
||||||
|
move 2 from 5 to 9
|
||||||
|
move 3 from 1 to 6
|
||||||
|
move 6 from 2 to 4
|
||||||
|
move 6 from 7 to 5
|
||||||
|
move 1 from 6 to 1
|
||||||
|
move 1 from 9 to 4
|
||||||
|
move 16 from 4 to 9
|
||||||
|
move 2 from 1 to 2
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 1 from 3 to 7
|
||||||
|
move 2 from 2 to 4
|
||||||
|
move 1 from 7 to 9
|
||||||
|
move 22 from 9 to 8
|
||||||
|
move 1 from 6 to 3
|
||||||
|
move 18 from 8 to 5
|
||||||
|
move 3 from 8 to 2
|
||||||
|
move 3 from 2 to 9
|
||||||
|
move 13 from 6 to 7
|
||||||
|
move 1 from 6 to 7
|
||||||
|
move 4 from 3 to 6
|
||||||
|
move 2 from 6 to 3
|
||||||
|
move 2 from 3 to 8
|
||||||
|
move 3 from 7 to 8
|
||||||
|
move 14 from 5 to 2
|
||||||
|
move 3 from 2 to 5
|
||||||
|
move 2 from 8 to 4
|
||||||
|
move 4 from 8 to 6
|
||||||
|
move 4 from 6 to 4
|
||||||
|
move 11 from 5 to 2
|
||||||
|
move 3 from 9 to 2
|
||||||
|
move 7 from 2 to 3
|
||||||
|
move 11 from 7 to 2
|
||||||
|
move 1 from 5 to 7
|
||||||
|
move 5 from 6 to 8
|
||||||
|
move 30 from 2 to 7
|
||||||
|
move 23 from 7 to 2
|
||||||
|
move 4 from 3 to 4
|
||||||
|
move 3 from 9 to 6
|
||||||
|
move 4 from 8 to 2
|
||||||
|
move 1 from 8 to 2
|
||||||
|
move 2 from 7 to 9
|
||||||
|
move 4 from 2 to 3
|
||||||
|
move 1 from 5 to 9
|
||||||
|
move 6 from 4 to 7
|
||||||
|
move 5 from 3 to 6
|
||||||
|
move 1 from 3 to 6
|
||||||
|
move 1 from 9 to 2
|
||||||
|
move 16 from 2 to 5
|
||||||
|
move 7 from 7 to 6
|
||||||
|
move 9 from 2 to 1
|
||||||
|
move 2 from 1 to 4
|
||||||
|
move 8 from 5 to 3
|
||||||
|
move 5 from 7 to 4
|
||||||
|
move 1 from 9 to 8
|
||||||
|
move 9 from 3 to 6
|
||||||
|
move 25 from 6 to 8
|
||||||
|
move 2 from 9 to 5
|
||||||
|
move 3 from 4 to 2
|
||||||
|
move 7 from 4 to 1
|
||||||
|
move 1 from 8 to 7
|
||||||
|
move 6 from 5 to 2
|
||||||
|
move 11 from 8 to 5
|
||||||
|
move 1 from 7 to 9
|
||||||
|
move 10 from 1 to 2
|
||||||
|
move 6 from 5 to 1
|
||||||
|
move 1 from 4 to 2
|
||||||
|
move 13 from 8 to 1
|
||||||
|
move 17 from 1 to 2
|
||||||
|
move 5 from 1 to 9
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 1 from 1 to 3
|
||||||
|
move 1 from 3 to 6
|
||||||
|
move 1 from 9 to 3
|
||||||
|
move 2 from 4 to 5
|
||||||
|
move 1 from 4 to 8
|
||||||
|
move 1 from 9 to 1
|
||||||
|
move 8 from 5 to 7
|
||||||
|
move 1 from 8 to 1
|
||||||
|
move 7 from 7 to 6
|
||||||
|
move 2 from 1 to 2
|
||||||
|
move 1 from 3 to 6
|
||||||
|
move 2 from 5 to 4
|
||||||
|
move 8 from 2 to 1
|
||||||
|
move 1 from 9 to 7
|
||||||
|
move 1 from 5 to 1
|
||||||
|
move 2 from 7 to 3
|
||||||
|
move 2 from 3 to 7
|
||||||
|
move 2 from 7 to 8
|
||||||
|
move 2 from 1 to 5
|
||||||
|
move 3 from 9 to 2
|
||||||
|
move 2 from 8 to 9
|
||||||
|
move 1 from 9 to 2
|
||||||
|
move 1 from 9 to 8
|
||||||
|
move 1 from 8 to 7
|
||||||
|
move 6 from 6 to 5
|
||||||
|
move 1 from 6 to 2
|
||||||
|
move 2 from 4 to 5
|
||||||
|
move 2 from 6 to 8
|
||||||
|
move 1 from 7 to 1
|
||||||
|
move 2 from 8 to 4
|
||||||
|
move 11 from 2 to 5
|
||||||
|
move 18 from 5 to 6
|
||||||
|
move 6 from 2 to 6
|
||||||
|
move 10 from 2 to 7
|
||||||
|
move 1 from 4 to 3
|
||||||
|
move 7 from 2 to 8
|
||||||
|
move 7 from 1 to 4
|
||||||
|
move 6 from 7 to 8
|
||||||
|
move 2 from 7 to 3
|
||||||
|
move 8 from 4 to 7
|
||||||
|
move 1 from 1 to 3
|
||||||
|
move 1 from 2 to 1
|
||||||
|
move 4 from 7 to 1
|
||||||
|
move 4 from 1 to 3
|
||||||
|
move 2 from 3 to 9
|
||||||
|
move 2 from 5 to 4
|
||||||
|
move 1 from 2 to 1
|
||||||
|
move 2 from 1 to 5
|
||||||
|
move 1 from 3 to 1
|
||||||
|
move 2 from 5 to 2
|
||||||
|
move 1 from 2 to 6
|
||||||
|
move 5 from 7 to 4
|
||||||
|
move 1 from 1 to 2
|
||||||
|
move 10 from 8 to 1
|
||||||
|
move 2 from 2 to 7
|
||||||
|
move 2 from 7 to 1
|
||||||
|
move 1 from 7 to 9
|
||||||
|
move 1 from 5 to 7
|
||||||
|
move 3 from 8 to 7
|
||||||
|
move 3 from 3 to 6
|
||||||
|
move 3 from 7 to 1
|
||||||
|
move 5 from 1 to 4
|
||||||
|
move 1 from 7 to 6
|
||||||
|
move 22 from 6 to 3
|
||||||
|
move 2 from 6 to 2
|
||||||
|
move 19 from 3 to 4
|
||||||
|
move 15 from 4 to 8
|
||||||
|
move 9 from 8 to 4
|
||||||
|
move 5 from 6 to 8
|
||||||
|
move 2 from 2 to 8
|
||||||
|
move 2 from 9 to 4
|
||||||
|
move 7 from 1 to 5
|
||||||
|
move 1 from 1 to 3
|
||||||
|
move 1 from 9 to 7
|
||||||
|
move 5 from 8 to 3
|
||||||
|
move 4 from 8 to 1
|
||||||
|
move 5 from 1 to 5
|
||||||
|
move 10 from 4 to 3
|
||||||
|
move 3 from 4 to 2
|
||||||
|
move 2 from 8 to 3
|
||||||
|
move 12 from 4 to 8
|
||||||
|
move 1 from 7 to 6
|
||||||
|
move 3 from 2 to 9
|
||||||
|
move 2 from 4 to 5
|
||||||
|
move 5 from 3 to 7
|
||||||
|
move 1 from 7 to 2
|
||||||
|
move 1 from 1 to 6
|
||||||
|
move 1 from 7 to 2
|
||||||
|
move 15 from 3 to 8
|
||||||
|
move 10 from 5 to 6
|
||||||
|
move 3 from 7 to 8
|
||||||
|
move 1 from 5 to 8
|
||||||
|
move 1 from 2 to 3
|
||||||
|
move 7 from 6 to 1
|
||||||
|
move 3 from 5 to 3
|
||||||
|
move 5 from 3 to 5
|
||||||
|
move 3 from 5 to 4
|
||||||
|
move 2 from 4 to 9
|
||||||
|
move 2 from 3 to 5
|
||||||
|
move 14 from 8 to 5
|
||||||
|
move 1 from 9 to 1
|
||||||
|
move 16 from 5 to 3
|
||||||
|
move 16 from 3 to 6
|
||||||
|
move 2 from 9 to 8
|
||||||
|
move 21 from 6 to 7
|
||||||
|
move 2 from 1 to 7
|
||||||
|
move 1 from 2 to 7
|
||||||
|
move 4 from 1 to 7
|
||||||
|
move 1 from 4 to 7
|
||||||
|
move 16 from 8 to 5
|
||||||
|
move 20 from 7 to 4
|
||||||
|
move 1 from 9 to 8
|
||||||
|
move 1 from 7 to 4
|
||||||
|
move 3 from 8 to 6
|
||||||
|
move 1 from 9 to 1
|
||||||
|
move 2 from 1 to 4
|
||||||
|
move 2 from 5 to 2
|
||||||
|
move 5 from 4 to 7
|
||||||
|
move 1 from 6 to 9
|
||||||
|
move 11 from 7 to 6
|
||||||
|
move 2 from 7 to 5
|
||||||
|
move 12 from 6 to 2
|
||||||
|
move 13 from 2 to 1
|
||||||
|
move 1 from 2 to 3
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 6 from 4 to 1
|
||||||
|
move 1 from 6 to 7
|
||||||
|
move 7 from 4 to 9
|
||||||
|
move 8 from 9 to 3
|
||||||
|
move 2 from 8 to 3
|
||||||
|
move 10 from 5 to 4
|
||||||
|
move 11 from 1 to 8
|
||||||
|
move 1 from 1 to 3
|
||||||
|
move 5 from 1 to 8
|
||||||
|
move 8 from 5 to 6
|
||||||
|
move 13 from 8 to 9
|
||||||
|
move 12 from 3 to 5
|
||||||
|
move 12 from 5 to 9
|
||||||
|
move 1 from 7 to 9
|
||||||
|
move 1 from 1 to 2
|
||||||
|
move 1 from 1 to 4
|
||||||
|
move 3 from 8 to 5
|
||||||
|
move 1 from 2 to 5
|
||||||
|
move 1 from 4 to 8
|
||||||
|
move 5 from 6 to 3
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 13 from 4 to 7
|
||||||
|
move 3 from 7 to 6
|
||||||
|
move 1 from 1 to 4
|
||||||
|
move 4 from 4 to 2
|
||||||
|
move 1 from 6 to 3
|
||||||
|
move 2 from 5 to 9
|
||||||
|
move 2 from 5 to 9
|
||||||
|
move 1 from 4 to 8
|
||||||
|
move 6 from 9 to 4
|
||||||
|
move 22 from 9 to 2
|
||||||
|
move 8 from 7 to 4
|
||||||
|
move 7 from 2 to 1
|
||||||
|
move 3 from 3 to 8
|
||||||
|
move 2 from 6 to 7
|
||||||
|
move 14 from 4 to 2
|
||||||
|
move 2 from 6 to 1
|
||||||
|
move 1 from 8 to 7
|
||||||
|
move 3 from 3 to 9
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 3 from 1 to 9
|
||||||
|
move 3 from 9 to 3
|
||||||
|
move 31 from 2 to 8
|
||||||
|
move 8 from 8 to 4
|
||||||
|
move 1 from 9 to 1
|
||||||
|
move 9 from 4 to 5
|
||||||
|
move 7 from 5 to 6
|
||||||
|
move 2 from 5 to 1
|
||||||
|
move 1 from 2 to 1
|
||||||
|
move 1 from 7 to 9
|
||||||
|
move 1 from 2 to 9
|
||||||
|
move 2 from 6 to 4
|
||||||
|
move 4 from 7 to 4
|
||||||
|
move 4 from 9 to 8
|
||||||
|
move 6 from 4 to 1
|
||||||
|
move 1 from 3 to 2
|
||||||
|
move 1 from 3 to 6
|
||||||
|
move 1 from 9 to 2
|
||||||
|
move 2 from 2 to 4
|
||||||
|
move 1 from 9 to 1
|
||||||
|
move 1 from 3 to 1
|
||||||
|
move 17 from 1 to 9
|
||||||
|
move 4 from 6 to 2
|
||||||
|
move 1 from 9 to 7
|
||||||
|
move 4 from 9 to 7
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 3 from 7 to 6
|
||||||
|
move 1 from 4 to 9
|
||||||
|
move 10 from 8 to 5
|
||||||
|
move 6 from 6 to 5
|
||||||
|
move 1 from 7 to 2
|
||||||
|
move 1 from 1 to 4
|
||||||
|
move 1 from 4 to 5
|
||||||
|
move 9 from 8 to 3
|
||||||
|
move 4 from 3 to 9
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 1 from 6 to 5
|
||||||
|
move 1 from 4 to 8
|
||||||
|
move 2 from 3 to 8
|
||||||
|
move 1 from 3 to 8
|
||||||
|
move 3 from 8 to 9
|
||||||
|
move 5 from 2 to 9
|
||||||
|
move 1 from 7 to 9
|
||||||
|
move 5 from 8 to 7
|
||||||
|
move 3 from 8 to 4
|
||||||
|
move 2 from 8 to 5
|
||||||
|
move 24 from 9 to 7
|
||||||
|
move 1 from 3 to 5
|
||||||
|
move 2 from 9 to 4
|
||||||
|
move 22 from 7 to 9
|
||||||
|
move 1 from 3 to 4
|
||||||
|
move 6 from 4 to 6
|
||||||
|
move 4 from 6 to 7
|
||||||
|
move 10 from 5 to 3
|
||||||
|
move 8 from 3 to 5
|
||||||
|
move 2 from 3 to 4
|
||||||
|
move 2 from 4 to 6
|
||||||
|
move 10 from 7 to 3
|
||||||
|
move 21 from 9 to 1
|
||||||
|
move 2 from 3 to 4
|
||||||
|
move 4 from 3 to 8
|
||||||
|
move 2 from 4 to 8
|
||||||
|
move 1 from 7 to 8
|
||||||
|
move 4 from 6 to 8
|
||||||
|
move 3 from 5 to 4
|
||||||
|
move 8 from 8 to 2
|
||||||
|
move 18 from 1 to 6
|
||||||
|
move 3 from 4 to 1
|
||||||
|
move 1 from 2 to 8
|
||||||
|
move 5 from 1 to 8
|
||||||
|
move 3 from 3 to 6
|
||||||
|
move 3 from 2 to 9
|
||||||
|
move 3 from 8 to 1
|
||||||
|
move 11 from 5 to 2
|
||||||
|
move 3 from 8 to 7
|
||||||
|
move 10 from 2 to 9
|
||||||
|
move 1 from 7 to 9
|
||||||
|
move 3 from 8 to 1
|
||||||
|
move 2 from 7 to 8
|
||||||
|
move 6 from 9 to 5
|
||||||
|
move 4 from 2 to 8
|
||||||
|
move 8 from 5 to 8
|
||||||
|
move 1 from 3 to 7
|
||||||
|
move 2 from 5 to 6
|
||||||
|
move 3 from 1 to 6
|
||||||
|
move 2 from 1 to 6
|
||||||
|
move 4 from 9 to 8
|
||||||
|
move 4 from 9 to 8
|
||||||
|
move 1 from 9 to 4
|
||||||
|
move 9 from 6 to 9
|
||||||
|
move 16 from 6 to 9
|
||||||
|
move 1 from 4 to 7
|
||||||
|
move 1 from 2 to 9
|
||||||
|
move 5 from 8 to 5
|
||||||
|
move 4 from 5 to 1
|
||||||
|
move 6 from 1 to 7
|
||||||
|
move 12 from 8 to 4
|
||||||
|
move 5 from 8 to 1
|
||||||
|
move 6 from 9 to 3
|
||||||
|
move 1 from 1 to 6
|
||||||
|
move 2 from 5 to 8
|
||||||
|
move 12 from 4 to 7
|
||||||
|
move 2 from 8 to 4
|
||||||
|
move 1 from 4 to 8
|
||||||
|
move 1 from 7 to 6
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 14 from 7 to 1
|
||||||
|
move 3 from 3 to 2
|
||||||
|
move 7 from 9 to 7
|
||||||
|
move 3 from 3 to 5
|
||||||
|
move 15 from 1 to 2
|
||||||
|
move 2 from 5 to 9
|
||||||
|
move 1 from 8 to 9
|
||||||
|
move 16 from 9 to 1
|
||||||
|
move 1 from 5 to 9
|
||||||
|
move 5 from 6 to 2
|
||||||
|
move 12 from 7 to 2
|
||||||
|
move 20 from 2 to 6
|
||||||
|
move 10 from 2 to 6
|
||||||
|
move 11 from 1 to 7
|
||||||
|
move 2 from 7 to 4
|
||||||
|
move 2 from 2 to 5
|
||||||
|
move 1 from 2 to 3
|
||||||
|
move 2 from 5 to 6
|
||||||
|
move 1 from 9 to 5
|
||||||
|
move 1 from 5 to 9
|
||||||
|
move 25 from 6 to 7
|
||||||
|
move 25 from 7 to 6
|
||||||
|
move 1 from 3 to 1
|
||||||
|
move 1 from 2 to 5
|
||||||
|
move 1 from 4 to 3
|
||||||
|
move 33 from 6 to 3
|
||||||
|
move 1 from 9 to 5
|
||||||
|
move 2 from 3 to 5
|
||||||
|
move 28 from 3 to 9
|
||||||
|
move 5 from 1 to 9
|
||||||
|
move 4 from 1 to 8
|
||||||
|
move 2 from 3 to 2
|
||||||
|
move 2 from 8 to 1
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 3 from 5 to 3
|
||||||
|
move 1 from 2 to 4
|
||||||
|
move 2 from 2 to 8
|
||||||
|
move 1 from 6 to 5
|
||||||
|
move 30 from 9 to 2
|
||||||
|
move 7 from 2 to 6
|
||||||
|
move 1 from 1 to 3
|
||||||
|
move 1 from 1 to 7
|
||||||
|
move 1 from 5 to 6
|
||||||
|
move 1 from 5 to 4
|
||||||
|
move 5 from 7 to 4
|
||||||
|
move 4 from 7 to 3
|
||||||
|
move 1 from 3 to 7
|
||||||
|
move 3 from 8 to 7
|
||||||
|
move 8 from 3 to 1
|
||||||
|
move 3 from 1 to 7
|
||||||
|
move 4 from 1 to 4
|
||||||
|
move 3 from 9 to 8
|
||||||
|
move 8 from 6 to 2
|
||||||
|
move 18 from 2 to 6
|
||||||
|
move 6 from 7 to 2
|
||||||
|
move 1 from 1 to 7
|
||||||
|
move 3 from 4 to 7
|
||||||
|
move 5 from 4 to 8
|
||||||
|
move 2 from 8 to 7
|
||||||
|
move 7 from 2 to 5
|
||||||
|
move 5 from 2 to 7
|
||||||
|
move 10 from 7 to 9
|
||||||
|
move 5 from 5 to 9
|
||||||
|
move 1 from 3 to 9
|
||||||
|
move 5 from 2 to 6
|
||||||
|
move 3 from 7 to 9
|
||||||
|
move 2 from 5 to 6
|
||||||
|
move 2 from 2 to 9
|
||||||
|
move 2 from 8 to 7
|
||||||
|
move 1 from 4 to 5
|
||||||
|
move 8 from 9 to 2
|
||||||
|
move 5 from 6 to 7
|
||||||
|
move 4 from 9 to 1
|
||||||
|
move 4 from 8 to 9
|
||||||
|
move 12 from 9 to 1
|
||||||
|
move 16 from 1 to 4
|
||||||
|
move 12 from 6 to 2
|
||||||
|
move 3 from 7 to 6
|
||||||
|
move 3 from 7 to 3
|
||||||
|
move 1 from 9 to 4
|
||||||
|
move 12 from 4 to 5
|
||||||
|
move 2 from 4 to 3
|
||||||
|
move 1 from 7 to 1
|
||||||
|
move 4 from 4 to 3
|
||||||
|
move 1 from 8 to 2
|
||||||
|
move 6 from 3 to 1
|
||||||
|
move 1 from 1 to 8
|
||||||
|
move 7 from 2 to 5
|
||||||
|
move 1 from 8 to 1
|
||||||
|
move 4 from 5 to 4
|
||||||
|
move 5 from 5 to 9
|
||||||
|
move 1 from 3 to 8
|
||||||
|
move 1 from 9 to 7
|
||||||
|
move 1 from 8 to 1
|
||||||
|
move 4 from 5 to 6
|
||||||
|
move 5 from 5 to 9
|
||||||
|
move 7 from 9 to 5
|
||||||
|
move 11 from 6 to 4
|
||||||
|
move 1 from 9 to 4
|
||||||
|
move 1 from 9 to 1
|
||||||
|
move 1 from 7 to 2
|
||||||
|
move 9 from 4 to 3
|
||||||
|
move 5 from 1 to 9
|
||||||
|
move 3 from 5 to 1
|
||||||
|
move 5 from 9 to 8
|
||||||
|
move 8 from 3 to 1
|
||||||
|
move 2 from 5 to 3
|
||||||
|
move 7 from 2 to 5
|
||||||
|
move 1 from 6 to 4
|
||||||
|
move 3 from 5 to 9
|
||||||
|
move 3 from 6 to 9
|
||||||
|
move 3 from 2 to 9
|
||||||
|
move 5 from 3 to 6
|
||||||
|
move 1 from 9 to 5
|
||||||
|
move 4 from 8 to 3
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 8 from 1 to 3
|
||||||
|
move 12 from 3 to 7
|
||||||
|
move 1 from 2 to 4
|
||||||
|
move 3 from 2 to 8
|
||||||
|
move 6 from 7 to 6
|
||||||
|
move 4 from 5 to 7
|
||||||
|
move 5 from 9 to 7
|
||||||
|
move 2 from 9 to 2
|
||||||
|
move 1 from 9 to 5
|
||||||
|
move 4 from 5 to 1
|
||||||
|
move 1 from 5 to 4
|
||||||
|
move 14 from 7 to 6
|
||||||
|
move 1 from 1 to 7
|
||||||
|
move 10 from 4 to 5
|
||||||
|
move 4 from 1 to 2
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 1 from 7 to 4
|
||||||
|
move 17 from 6 to 8
|
||||||
|
move 1 from 5 to 7
|
||||||
|
move 10 from 5 to 4
|
||||||
|
move 1 from 2 to 6
|
||||||
|
move 4 from 2 to 6
|
||||||
|
move 13 from 6 to 1
|
||||||
|
move 9 from 4 to 3
|
||||||
|
move 2 from 2 to 4
|
||||||
|
move 1 from 6 to 7
|
||||||
|
move 1 from 4 to 3
|
||||||
|
move 8 from 3 to 5
|
||||||
|
move 1 from 3 to 4
|
||||||
|
move 17 from 1 to 3
|
||||||
|
move 15 from 3 to 7
|
||||||
|
move 3 from 4 to 1
|
||||||
|
move 6 from 8 to 9
|
||||||
|
move 6 from 9 to 1
|
||||||
|
move 2 from 3 to 1
|
||||||
|
move 2 from 5 to 2
|
||||||
|
move 6 from 7 to 6
|
||||||
|
move 3 from 6 to 9
|
9
2022/day-05/inputs/test.txt
Normal file
9
2022/day-05/inputs/test.txt
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
[D]
|
||||||
|
[N] [C]
|
||||||
|
[Z] [M] [P]
|
||||||
|
1 2 3
|
||||||
|
|
||||||
|
move 1 from 2 to 1
|
||||||
|
move 3 from 1 to 3
|
||||||
|
move 2 from 2 to 1
|
||||||
|
move 1 from 1 to 2
|
35
2022/day-05/src/bin/part_one.rs
Normal file
35
2022/day-05/src/bin/part_one.rs
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
use std::{env, io};
|
||||||
|
|
||||||
|
use aoc_2022_05::{parse_file, Instruction, Stack, Stacks};
|
||||||
|
|
||||||
|
pub fn move_stack(stacks: &mut Stacks, (amount, from_idx, to_idx): Instruction) {
|
||||||
|
let source = stacks.get_mut(&from_idx).unwrap();
|
||||||
|
let mut swap = Stack::new();
|
||||||
|
for _ in 0..amount {
|
||||||
|
swap.push_back(source.pop_front().unwrap());
|
||||||
|
}
|
||||||
|
|
||||||
|
let target = stacks.get_mut(&to_idx).unwrap();
|
||||||
|
|
||||||
|
for item in swap {
|
||||||
|
target.push_front(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() -> io::Result<()> {
|
||||||
|
let infile_path = env::args().nth(1).expect("input file");
|
||||||
|
|
||||||
|
let (mut stacks, instructions) = parse_file(infile_path)?;
|
||||||
|
|
||||||
|
for instruction in instructions {
|
||||||
|
move_stack(&mut stacks, instruction);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (_, stack) in stacks {
|
||||||
|
let first = stack.front().unwrap();
|
||||||
|
print!("{first}");
|
||||||
|
}
|
||||||
|
println!();
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
35
2022/day-05/src/bin/part_two.rs
Normal file
35
2022/day-05/src/bin/part_two.rs
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
use std::{env, io};
|
||||||
|
|
||||||
|
use aoc_2022_05::{parse_file, Instruction, Stack, Stacks};
|
||||||
|
|
||||||
|
pub fn move_stack(stacks: &mut Stacks, (amount, from_idx, to_idx): Instruction) {
|
||||||
|
let source = stacks.get_mut(&from_idx).unwrap();
|
||||||
|
let mut swap = Stack::new();
|
||||||
|
for _ in 0..amount {
|
||||||
|
swap.push_front(source.pop_front().unwrap());
|
||||||
|
}
|
||||||
|
|
||||||
|
let target = stacks.get_mut(&to_idx).unwrap();
|
||||||
|
|
||||||
|
for item in swap {
|
||||||
|
target.push_front(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() -> io::Result<()> {
|
||||||
|
let infile_path = env::args().nth(1).expect("input file");
|
||||||
|
|
||||||
|
let (mut stacks, instructions) = parse_file(infile_path)?;
|
||||||
|
|
||||||
|
for instruction in instructions {
|
||||||
|
move_stack(&mut stacks, instruction);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (_, stack) in stacks {
|
||||||
|
let first = stack.front().unwrap();
|
||||||
|
print!("{first}");
|
||||||
|
}
|
||||||
|
println!();
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
59
2022/day-05/src/lib.rs
Normal file
59
2022/day-05/src/lib.rs
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
use std::{
|
||||||
|
collections::{BTreeMap, VecDeque},
|
||||||
|
fs::File,
|
||||||
|
io::{self, BufRead, BufReader},
|
||||||
|
path::Path,
|
||||||
|
};
|
||||||
|
|
||||||
|
pub type Stack = VecDeque<char>;
|
||||||
|
pub type Stacks = BTreeMap<usize, Stack>;
|
||||||
|
pub type Instruction = (usize, usize, usize);
|
||||||
|
pub type Instructions = Vec<Instruction>;
|
||||||
|
|
||||||
|
pub fn parse_file<P>(path: P) -> io::Result<(Stacks, Instructions)>
|
||||||
|
where
|
||||||
|
P: AsRef<Path>,
|
||||||
|
{
|
||||||
|
let file = File::open(path)?;
|
||||||
|
let reader = BufReader::new(file);
|
||||||
|
|
||||||
|
let mut stacks = Stacks::new();
|
||||||
|
let mut instructions = Instructions::new();
|
||||||
|
let mut reading_instructions = false;
|
||||||
|
|
||||||
|
for line in reader.lines() {
|
||||||
|
let line = line?;
|
||||||
|
|
||||||
|
if line.is_empty() {
|
||||||
|
reading_instructions = true;
|
||||||
|
} else if reading_instructions {
|
||||||
|
let instruction = parse_instruction(&line).expect("invalid instruction");
|
||||||
|
instructions.push(instruction);
|
||||||
|
} else {
|
||||||
|
for (index, item) in line.chars().skip(1).step_by(4).enumerate() {
|
||||||
|
if item != ' ' && !item.is_numeric() {
|
||||||
|
stacks
|
||||||
|
.entry(index + 1)
|
||||||
|
.and_modify(|v: &mut VecDeque<char>| v.push_back(item))
|
||||||
|
.or_insert_with(|| {
|
||||||
|
let mut stack = VecDeque::new();
|
||||||
|
stack.push_back(item);
|
||||||
|
stack
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok((stacks, instructions))
|
||||||
|
}
|
||||||
|
|
||||||
|
fn parse_instruction(line: &str) -> Option<Instruction> {
|
||||||
|
let parts = line.split_whitespace().collect::<Vec<_>>();
|
||||||
|
|
||||||
|
let amount = parts[1].parse().unwrap();
|
||||||
|
let from_idx = parts[3].parse().unwrap();
|
||||||
|
let to_idx = parts[5].parse().unwrap();
|
||||||
|
|
||||||
|
Some((amount, from_idx, to_idx))
|
||||||
|
}
|
@ -9,4 +9,4 @@
|
|||||||
- [2019](2019/README.md) (0% completed)
|
- [2019](2019/README.md) (0% completed)
|
||||||
- [2020](2020/README.md) (20% completed)
|
- [2020](2020/README.md) (20% completed)
|
||||||
- [2021](2021/README.md) (68% completed)
|
- [2021](2021/README.md) (68% completed)
|
||||||
- [2022](2022/README.md) (16% completed)
|
- [2022](2022/README.md) (20% completed)
|
||||||
|
Loading…
Reference in New Issue
Block a user