Added day5
This commit is contained in:
parent
373c34a160
commit
16a9a199f8
|
@ -7,6 +7,16 @@ name = "AoC2022"
|
|||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"itertools",
|
||||
"regex",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "aho-corasick"
|
||||
version = "0.7.20"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
|
@ -23,3 +33,26 @@ checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
|
|||
dependencies = [
|
||||
"either",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "memchr"
|
||||
version = "2.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
|
||||
|
||||
[[package]]
|
||||
name = "regex"
|
||||
version = "1.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a"
|
||||
dependencies = [
|
||||
"aho-corasick",
|
||||
"memchr",
|
||||
"regex-syntax",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "regex-syntax"
|
||||
version = "0.6.28"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848"
|
||||
|
|
|
@ -7,3 +7,4 @@ edition = "2021"
|
|||
|
||||
[dependencies]
|
||||
itertools = "0.10.5"
|
||||
regex = "1.7.0"
|
||||
|
|
|
@ -0,0 +1,513 @@
|
|||
[B] [L] [S]
|
||||
[Q] [J] [C] [W] [F]
|
||||
[F] [T] [B] [D] [P] [P]
|
||||
[S] [J] [Z] [T] [B] [C] [H]
|
||||
[L] [H] [H] [Z] [G] [Z] [G] [R]
|
||||
[R] [H] [D] [R] [F] [C] [V] [Q] [T]
|
||||
[C] [J] [M] [G] [P] [H] [N] [J] [D]
|
||||
[H] [B] [R] [S] [R] [T] [S] [R] [L]
|
||||
1 2 3 4 5 6 7 8 9
|
||||
|
||||
move 8 from 7 to 1
|
||||
move 9 from 1 to 9
|
||||
move 4 from 5 to 4
|
||||
move 4 from 6 to 1
|
||||
move 3 from 8 to 5
|
||||
move 6 from 5 to 9
|
||||
move 1 from 5 to 1
|
||||
move 4 from 4 to 9
|
||||
move 7 from 3 to 7
|
||||
move 6 from 7 to 3
|
||||
move 1 from 8 to 7
|
||||
move 2 from 7 to 6
|
||||
move 1 from 8 to 9
|
||||
move 1 from 6 to 3
|
||||
move 4 from 3 to 5
|
||||
move 5 from 1 to 3
|
||||
move 1 from 1 to 8
|
||||
move 2 from 3 to 4
|
||||
move 1 from 4 to 1
|
||||
move 7 from 9 to 2
|
||||
move 1 from 6 to 3
|
||||
move 2 from 1 to 9
|
||||
move 20 from 9 to 7
|
||||
move 6 from 4 to 9
|
||||
move 1 from 2 to 9
|
||||
move 6 from 9 to 4
|
||||
move 1 from 4 to 6
|
||||
move 1 from 8 to 6
|
||||
move 1 from 4 to 7
|
||||
move 5 from 2 to 3
|
||||
move 2 from 6 to 4
|
||||
move 3 from 9 to 5
|
||||
move 5 from 3 to 5
|
||||
move 3 from 3 to 8
|
||||
move 3 from 5 to 6
|
||||
move 1 from 9 to 8
|
||||
move 5 from 4 to 5
|
||||
move 3 from 4 to 9
|
||||
move 1 from 8 to 2
|
||||
move 2 from 8 to 2
|
||||
move 11 from 5 to 6
|
||||
move 16 from 7 to 1
|
||||
move 2 from 1 to 7
|
||||
move 14 from 6 to 1
|
||||
move 11 from 1 to 6
|
||||
move 2 from 1 to 4
|
||||
move 4 from 3 to 4
|
||||
move 9 from 2 to 4
|
||||
move 2 from 4 to 8
|
||||
move 2 from 5 to 3
|
||||
move 9 from 4 to 7
|
||||
move 2 from 3 to 2
|
||||
move 1 from 2 to 7
|
||||
move 1 from 8 to 4
|
||||
move 4 from 1 to 4
|
||||
move 1 from 9 to 1
|
||||
move 7 from 4 to 7
|
||||
move 2 from 6 to 5
|
||||
move 1 from 8 to 6
|
||||
move 1 from 4 to 2
|
||||
move 10 from 1 to 6
|
||||
move 5 from 7 to 3
|
||||
move 1 from 4 to 7
|
||||
move 2 from 1 to 2
|
||||
move 2 from 2 to 4
|
||||
move 4 from 3 to 4
|
||||
move 18 from 7 to 6
|
||||
move 6 from 6 to 4
|
||||
move 1 from 7 to 4
|
||||
move 1 from 7 to 6
|
||||
move 11 from 4 to 5
|
||||
move 14 from 5 to 9
|
||||
move 1 from 8 to 7
|
||||
move 8 from 6 to 2
|
||||
move 2 from 4 to 5
|
||||
move 7 from 9 to 1
|
||||
move 6 from 9 to 7
|
||||
move 5 from 1 to 8
|
||||
move 1 from 3 to 6
|
||||
move 10 from 6 to 3
|
||||
move 1 from 9 to 6
|
||||
move 1 from 5 to 4
|
||||
move 4 from 3 to 8
|
||||
move 1 from 5 to 9
|
||||
move 9 from 2 to 3
|
||||
move 1 from 9 to 5
|
||||
move 4 from 8 to 4
|
||||
move 1 from 5 to 3
|
||||
move 5 from 8 to 7
|
||||
move 5 from 7 to 2
|
||||
move 3 from 4 to 1
|
||||
move 8 from 6 to 5
|
||||
move 1 from 7 to 9
|
||||
move 4 from 1 to 3
|
||||
move 2 from 4 to 6
|
||||
move 5 from 5 to 2
|
||||
move 4 from 6 to 9
|
||||
move 1 from 1 to 2
|
||||
move 1 from 5 to 6
|
||||
move 7 from 2 to 8
|
||||
move 5 from 6 to 8
|
||||
move 4 from 7 to 9
|
||||
move 15 from 3 to 9
|
||||
move 1 from 7 to 3
|
||||
move 1 from 5 to 3
|
||||
move 6 from 2 to 6
|
||||
move 1 from 5 to 2
|
||||
move 2 from 3 to 9
|
||||
move 1 from 6 to 8
|
||||
move 5 from 8 to 9
|
||||
move 2 from 3 to 8
|
||||
move 3 from 3 to 6
|
||||
move 11 from 9 to 4
|
||||
move 1 from 2 to 1
|
||||
move 2 from 8 to 4
|
||||
move 1 from 1 to 4
|
||||
move 7 from 4 to 7
|
||||
move 9 from 6 to 3
|
||||
move 4 from 7 to 8
|
||||
move 4 from 7 to 6
|
||||
move 19 from 9 to 4
|
||||
move 7 from 8 to 5
|
||||
move 5 from 3 to 6
|
||||
move 6 from 6 to 9
|
||||
move 3 from 3 to 5
|
||||
move 1 from 3 to 9
|
||||
move 8 from 4 to 5
|
||||
move 2 from 9 to 6
|
||||
move 3 from 8 to 2
|
||||
move 1 from 8 to 4
|
||||
move 1 from 2 to 5
|
||||
move 19 from 4 to 1
|
||||
move 2 from 5 to 7
|
||||
move 2 from 2 to 4
|
||||
move 13 from 5 to 2
|
||||
move 1 from 5 to 1
|
||||
move 2 from 6 to 9
|
||||
move 1 from 8 to 7
|
||||
move 9 from 9 to 3
|
||||
move 2 from 3 to 8
|
||||
move 1 from 4 to 2
|
||||
move 5 from 6 to 7
|
||||
move 1 from 4 to 6
|
||||
move 2 from 8 to 7
|
||||
move 7 from 1 to 5
|
||||
move 1 from 6 to 7
|
||||
move 10 from 1 to 8
|
||||
move 1 from 1 to 3
|
||||
move 1 from 1 to 2
|
||||
move 6 from 5 to 3
|
||||
move 4 from 5 to 3
|
||||
move 5 from 7 to 1
|
||||
move 3 from 1 to 2
|
||||
move 4 from 7 to 5
|
||||
move 8 from 3 to 6
|
||||
move 2 from 1 to 7
|
||||
move 4 from 5 to 8
|
||||
move 7 from 3 to 5
|
||||
move 3 from 7 to 2
|
||||
move 1 from 7 to 3
|
||||
move 12 from 2 to 8
|
||||
move 23 from 8 to 2
|
||||
move 16 from 2 to 6
|
||||
move 1 from 9 to 6
|
||||
move 7 from 5 to 7
|
||||
move 7 from 2 to 4
|
||||
move 2 from 3 to 8
|
||||
move 1 from 1 to 9
|
||||
move 5 from 8 to 1
|
||||
move 2 from 3 to 9
|
||||
move 2 from 7 to 1
|
||||
move 4 from 1 to 3
|
||||
move 4 from 7 to 2
|
||||
move 2 from 1 to 4
|
||||
move 11 from 2 to 9
|
||||
move 3 from 3 to 4
|
||||
move 1 from 9 to 1
|
||||
move 2 from 2 to 7
|
||||
move 4 from 4 to 8
|
||||
move 2 from 9 to 5
|
||||
move 2 from 5 to 7
|
||||
move 4 from 4 to 6
|
||||
move 1 from 3 to 8
|
||||
move 1 from 9 to 8
|
||||
move 4 from 4 to 2
|
||||
move 2 from 1 to 3
|
||||
move 1 from 8 to 4
|
||||
move 2 from 3 to 5
|
||||
move 3 from 9 to 7
|
||||
move 2 from 8 to 9
|
||||
move 1 from 9 to 6
|
||||
move 2 from 7 to 3
|
||||
move 2 from 8 to 1
|
||||
move 1 from 4 to 9
|
||||
move 18 from 6 to 2
|
||||
move 1 from 6 to 5
|
||||
move 1 from 5 to 9
|
||||
move 18 from 2 to 3
|
||||
move 1 from 8 to 7
|
||||
move 2 from 5 to 9
|
||||
move 1 from 1 to 4
|
||||
move 3 from 2 to 1
|
||||
move 9 from 9 to 4
|
||||
move 7 from 4 to 6
|
||||
move 2 from 7 to 3
|
||||
move 2 from 4 to 9
|
||||
move 7 from 6 to 7
|
||||
move 3 from 7 to 2
|
||||
move 7 from 6 to 3
|
||||
move 2 from 6 to 9
|
||||
move 24 from 3 to 9
|
||||
move 2 from 6 to 8
|
||||
move 1 from 4 to 2
|
||||
move 2 from 8 to 5
|
||||
move 31 from 9 to 3
|
||||
move 6 from 7 to 4
|
||||
move 35 from 3 to 7
|
||||
move 1 from 1 to 8
|
||||
move 1 from 5 to 7
|
||||
move 1 from 5 to 4
|
||||
move 1 from 3 to 9
|
||||
move 1 from 8 to 2
|
||||
move 3 from 1 to 7
|
||||
move 7 from 4 to 5
|
||||
move 1 from 9 to 8
|
||||
move 4 from 5 to 6
|
||||
move 2 from 5 to 2
|
||||
move 6 from 2 to 5
|
||||
move 2 from 5 to 7
|
||||
move 2 from 2 to 1
|
||||
move 2 from 5 to 4
|
||||
move 1 from 8 to 4
|
||||
move 3 from 4 to 6
|
||||
move 4 from 6 to 7
|
||||
move 1 from 5 to 2
|
||||
move 2 from 6 to 9
|
||||
move 1 from 6 to 4
|
||||
move 1 from 4 to 8
|
||||
move 2 from 9 to 6
|
||||
move 1 from 8 to 9
|
||||
move 34 from 7 to 9
|
||||
move 6 from 7 to 3
|
||||
move 1 from 7 to 2
|
||||
move 1 from 5 to 8
|
||||
move 1 from 8 to 6
|
||||
move 6 from 7 to 4
|
||||
move 1 from 7 to 3
|
||||
move 7 from 3 to 5
|
||||
move 6 from 4 to 6
|
||||
move 31 from 9 to 1
|
||||
move 3 from 5 to 7
|
||||
move 24 from 1 to 3
|
||||
move 1 from 2 to 4
|
||||
move 3 from 9 to 1
|
||||
move 14 from 3 to 5
|
||||
move 1 from 4 to 3
|
||||
move 1 from 9 to 7
|
||||
move 8 from 3 to 7
|
||||
move 1 from 2 to 9
|
||||
move 7 from 1 to 5
|
||||
move 3 from 6 to 8
|
||||
move 3 from 6 to 1
|
||||
move 1 from 1 to 3
|
||||
move 4 from 3 to 2
|
||||
move 4 from 2 to 3
|
||||
move 2 from 5 to 1
|
||||
move 9 from 7 to 4
|
||||
move 1 from 6 to 5
|
||||
move 1 from 1 to 7
|
||||
move 3 from 8 to 9
|
||||
move 5 from 4 to 2
|
||||
move 3 from 2 to 3
|
||||
move 1 from 2 to 3
|
||||
move 2 from 4 to 1
|
||||
move 2 from 9 to 4
|
||||
move 1 from 9 to 3
|
||||
move 1 from 6 to 1
|
||||
move 1 from 9 to 6
|
||||
move 25 from 5 to 4
|
||||
move 4 from 1 to 9
|
||||
move 2 from 3 to 7
|
||||
move 2 from 6 to 9
|
||||
move 2 from 9 to 5
|
||||
move 6 from 7 to 1
|
||||
move 5 from 3 to 6
|
||||
move 10 from 4 to 3
|
||||
move 10 from 4 to 8
|
||||
move 2 from 4 to 2
|
||||
move 5 from 1 to 9
|
||||
move 2 from 6 to 4
|
||||
move 6 from 9 to 6
|
||||
move 7 from 6 to 4
|
||||
move 3 from 9 to 4
|
||||
move 3 from 2 to 4
|
||||
move 4 from 3 to 8
|
||||
move 2 from 5 to 3
|
||||
move 10 from 4 to 9
|
||||
move 4 from 9 to 7
|
||||
move 5 from 9 to 5
|
||||
move 4 from 5 to 1
|
||||
move 9 from 4 to 6
|
||||
move 10 from 1 to 3
|
||||
move 1 from 5 to 4
|
||||
move 3 from 4 to 5
|
||||
move 2 from 5 to 7
|
||||
move 1 from 7 to 3
|
||||
move 1 from 6 to 9
|
||||
move 11 from 8 to 6
|
||||
move 14 from 6 to 5
|
||||
move 1 from 4 to 7
|
||||
move 7 from 5 to 3
|
||||
move 3 from 5 to 4
|
||||
move 2 from 9 to 5
|
||||
move 2 from 4 to 3
|
||||
move 2 from 7 to 4
|
||||
move 11 from 3 to 9
|
||||
move 2 from 8 to 2
|
||||
move 2 from 2 to 3
|
||||
move 1 from 8 to 2
|
||||
move 1 from 2 to 9
|
||||
move 3 from 4 to 5
|
||||
move 2 from 6 to 9
|
||||
move 1 from 1 to 8
|
||||
move 10 from 9 to 7
|
||||
move 2 from 9 to 3
|
||||
move 23 from 3 to 9
|
||||
move 4 from 6 to 4
|
||||
move 9 from 5 to 6
|
||||
move 1 from 5 to 3
|
||||
move 5 from 6 to 7
|
||||
move 1 from 1 to 7
|
||||
move 1 from 3 to 9
|
||||
move 4 from 6 to 7
|
||||
move 1 from 8 to 7
|
||||
move 1 from 7 to 5
|
||||
move 1 from 5 to 1
|
||||
move 12 from 7 to 6
|
||||
move 9 from 9 to 3
|
||||
move 6 from 6 to 4
|
||||
move 8 from 7 to 3
|
||||
move 3 from 7 to 4
|
||||
move 6 from 3 to 1
|
||||
move 10 from 4 to 8
|
||||
move 10 from 8 to 7
|
||||
move 2 from 3 to 7
|
||||
move 9 from 3 to 8
|
||||
move 2 from 6 to 3
|
||||
move 10 from 7 to 1
|
||||
move 3 from 4 to 6
|
||||
move 5 from 8 to 5
|
||||
move 3 from 5 to 7
|
||||
move 1 from 3 to 2
|
||||
move 1 from 2 to 6
|
||||
move 6 from 9 to 1
|
||||
move 12 from 1 to 3
|
||||
move 3 from 6 to 9
|
||||
move 3 from 1 to 7
|
||||
move 1 from 3 to 2
|
||||
move 7 from 1 to 7
|
||||
move 1 from 2 to 7
|
||||
move 2 from 6 to 4
|
||||
move 1 from 4 to 5
|
||||
move 3 from 8 to 7
|
||||
move 2 from 6 to 3
|
||||
move 2 from 6 to 1
|
||||
move 1 from 3 to 8
|
||||
move 5 from 3 to 4
|
||||
move 2 from 8 to 5
|
||||
move 14 from 7 to 4
|
||||
move 1 from 3 to 2
|
||||
move 1 from 3 to 7
|
||||
move 7 from 7 to 4
|
||||
move 2 from 5 to 3
|
||||
move 2 from 1 to 4
|
||||
move 9 from 4 to 6
|
||||
move 1 from 1 to 2
|
||||
move 4 from 9 to 4
|
||||
move 8 from 9 to 3
|
||||
move 2 from 2 to 7
|
||||
move 13 from 4 to 8
|
||||
move 4 from 4 to 1
|
||||
move 2 from 7 to 6
|
||||
move 12 from 3 to 2
|
||||
move 11 from 2 to 9
|
||||
move 6 from 4 to 9
|
||||
move 18 from 9 to 4
|
||||
move 2 from 1 to 6
|
||||
move 6 from 8 to 1
|
||||
move 13 from 6 to 5
|
||||
move 8 from 4 to 5
|
||||
move 1 from 2 to 9
|
||||
move 8 from 1 to 4
|
||||
move 7 from 4 to 8
|
||||
move 4 from 3 to 5
|
||||
move 10 from 8 to 5
|
||||
move 13 from 5 to 8
|
||||
move 12 from 4 to 5
|
||||
move 2 from 9 to 8
|
||||
move 29 from 5 to 9
|
||||
move 24 from 9 to 2
|
||||
move 23 from 2 to 4
|
||||
move 5 from 9 to 2
|
||||
move 7 from 5 to 7
|
||||
move 1 from 5 to 1
|
||||
move 7 from 4 to 8
|
||||
move 14 from 8 to 1
|
||||
move 5 from 2 to 6
|
||||
move 16 from 4 to 7
|
||||
move 8 from 1 to 6
|
||||
move 1 from 2 to 8
|
||||
move 20 from 7 to 6
|
||||
move 11 from 6 to 4
|
||||
move 3 from 1 to 5
|
||||
move 3 from 4 to 3
|
||||
move 8 from 4 to 9
|
||||
move 8 from 6 to 1
|
||||
move 2 from 1 to 4
|
||||
move 3 from 5 to 2
|
||||
move 12 from 8 to 2
|
||||
move 1 from 7 to 1
|
||||
move 1 from 3 to 5
|
||||
move 1 from 7 to 8
|
||||
move 1 from 7 to 3
|
||||
move 12 from 2 to 8
|
||||
move 13 from 6 to 4
|
||||
move 2 from 1 to 9
|
||||
move 3 from 2 to 6
|
||||
move 3 from 9 to 7
|
||||
move 5 from 9 to 1
|
||||
move 4 from 6 to 4
|
||||
move 2 from 3 to 6
|
||||
move 1 from 5 to 9
|
||||
move 1 from 6 to 7
|
||||
move 9 from 1 to 5
|
||||
move 11 from 8 to 3
|
||||
move 1 from 6 to 8
|
||||
move 3 from 7 to 1
|
||||
move 1 from 8 to 7
|
||||
move 2 from 8 to 9
|
||||
move 7 from 1 to 2
|
||||
move 17 from 4 to 7
|
||||
move 1 from 8 to 6
|
||||
move 4 from 7 to 2
|
||||
move 4 from 9 to 7
|
||||
move 4 from 2 to 3
|
||||
move 1 from 1 to 4
|
||||
move 2 from 4 to 3
|
||||
move 9 from 5 to 4
|
||||
move 1 from 6 to 8
|
||||
move 6 from 2 to 1
|
||||
move 5 from 1 to 9
|
||||
move 9 from 4 to 3
|
||||
move 1 from 4 to 6
|
||||
move 2 from 9 to 7
|
||||
move 1 from 1 to 5
|
||||
move 1 from 2 to 7
|
||||
move 1 from 8 to 9
|
||||
move 1 from 6 to 8
|
||||
move 1 from 5 to 4
|
||||
move 1 from 8 to 7
|
||||
move 23 from 3 to 7
|
||||
move 36 from 7 to 6
|
||||
move 33 from 6 to 1
|
||||
move 1 from 4 to 8
|
||||
move 7 from 1 to 5
|
||||
move 1 from 8 to 1
|
||||
move 3 from 7 to 2
|
||||
move 24 from 1 to 3
|
||||
move 7 from 7 to 3
|
||||
move 3 from 5 to 1
|
||||
move 4 from 5 to 3
|
||||
move 1 from 9 to 8
|
||||
move 2 from 9 to 6
|
||||
move 1 from 8 to 5
|
||||
move 3 from 2 to 5
|
||||
move 30 from 3 to 5
|
||||
move 1 from 6 to 7
|
||||
move 6 from 1 to 8
|
||||
move 7 from 3 to 2
|
||||
move 1 from 7 to 5
|
||||
move 2 from 3 to 2
|
||||
move 2 from 6 to 8
|
||||
move 1 from 6 to 1
|
||||
move 7 from 5 to 8
|
||||
move 8 from 8 to 7
|
||||
move 20 from 5 to 8
|
||||
move 2 from 9 to 7
|
||||
move 8 from 2 to 1
|
||||
move 7 from 7 to 3
|
||||
move 1 from 2 to 1
|
||||
move 3 from 7 to 9
|
||||
move 4 from 8 to 3
|
||||
move 5 from 5 to 6
|
||||
move 1 from 5 to 9
|
||||
move 4 from 9 to 4
|
||||
move 1 from 5 to 9
|
||||
move 2 from 3 to 6
|
||||
move 1 from 5 to 8
|
||||
move 7 from 6 to 3
|
||||
move 1 from 4 to 1
|
||||
move 7 from 3 to 2
|
||||
move 3 from 3 to 5
|
||||
move 2 from 4 to 7
|
|
@ -0,0 +1,114 @@
|
|||
use itertools::Itertools;
|
||||
use regex::Regex;
|
||||
use std::collections::HashSet;
|
||||
use std::error::Error;
|
||||
use std::fs::File;
|
||||
use std::io::{self, BufRead, Lines};
|
||||
use std::vec::Vec;
|
||||
|
||||
fn parse_stacks(lines: &Vec<String>) -> Vec<Vec<char>> {
|
||||
let mut stacks: Vec<Vec<char>> = Vec::new();
|
||||
for line in lines {
|
||||
if !line.contains("[") {
|
||||
break;
|
||||
}
|
||||
|
||||
let mut pos = 1;
|
||||
let mut stack = 0;
|
||||
while pos < line.len() {
|
||||
let c = line.chars().nth(pos).unwrap();
|
||||
if stacks.len() <= stack {
|
||||
stacks.push(Vec::new());
|
||||
}
|
||||
if c != ' ' {
|
||||
stacks[stack].insert(0, c)
|
||||
}
|
||||
pos += 4;
|
||||
stack += 1;
|
||||
}
|
||||
}
|
||||
|
||||
stacks
|
||||
}
|
||||
|
||||
struct Move {
|
||||
count: usize,
|
||||
src: usize,
|
||||
dst: usize,
|
||||
}
|
||||
|
||||
fn parse_moves(lines: &Vec<String>) -> Vec<Move> {
|
||||
let move_re = Regex::new(r"^move ([0-9]+) from ([0-9]+) to ([0-9]+)$").unwrap();
|
||||
let mut move_section = false;
|
||||
|
||||
let mut moves: Vec<Move> = Vec::new();
|
||||
|
||||
for line in lines {
|
||||
if line.is_empty() {
|
||||
move_section = true;
|
||||
continue;
|
||||
}
|
||||
if !move_section {
|
||||
continue;
|
||||
}
|
||||
|
||||
let results = move_re.captures(line).unwrap();
|
||||
let count: usize = results[1].parse().unwrap();
|
||||
let src: usize = results[2].parse().unwrap();
|
||||
let dst: usize = results[3].parse().unwrap();
|
||||
|
||||
moves.push(Move {
|
||||
count: count,
|
||||
src: src - 1,
|
||||
dst: dst - 1,
|
||||
});
|
||||
}
|
||||
|
||||
moves
|
||||
}
|
||||
|
||||
fn main() -> Result<(), Box<dyn Error>> {
|
||||
let file = File::open("inputs/day5.txt")?;
|
||||
let mut lines: Vec<String> = io::BufReader::new(file)
|
||||
.lines()
|
||||
.map(|l| l.unwrap())
|
||||
.collect();
|
||||
|
||||
let stacks = parse_stacks(&lines);
|
||||
let moves = parse_moves(&lines);
|
||||
|
||||
let mut stacks1 = stacks.clone();
|
||||
for m in moves.iter() {
|
||||
for _ in 0..m.count {
|
||||
let tmp = stacks1[m.src].pop().unwrap();
|
||||
stacks1[m.dst].push(tmp);
|
||||
}
|
||||
}
|
||||
|
||||
let mut answer1 = String::new();
|
||||
|
||||
for stack in stacks1 {
|
||||
answer1.push(stack.last().unwrap().to_owned());
|
||||
}
|
||||
|
||||
println!("Answer Part1: {}", answer1);
|
||||
|
||||
let mut stacks2 = stacks.clone();
|
||||
for m in moves.iter() {
|
||||
let pos = stacks2[m.dst].len();
|
||||
for _ in 0..m.count {
|
||||
let tmp = stacks2[m.src].pop().unwrap();
|
||||
stacks2[m.dst].insert(pos, tmp);
|
||||
}
|
||||
}
|
||||
|
||||
let mut answer2 = String::new();
|
||||
|
||||
for stack in stacks2 {
|
||||
answer2.push(stack.last().unwrap().to_owned());
|
||||
}
|
||||
|
||||
println!("Answer Part2: {}", answer2);
|
||||
|
||||
Ok(())
|
||||
}
|
Loading…
Reference in New Issue