Day 5
This commit is contained in:
parent
15a59bae60
commit
3a6832503c
243
day5/Cargo.lock
generated
Normal file
243
day5/Cargo.lock
generated
Normal file
@ -0,0 +1,243 @@
|
||||
# This file is automatically @generated by Cargo.
|
||||
# It is not intended for manual editing.
|
||||
version = 3
|
||||
|
||||
[[package]]
|
||||
name = "addr2line"
|
||||
version = "0.17.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b"
|
||||
dependencies = [
|
||||
"gimli",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "adler"
|
||||
version = "1.0.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe"
|
||||
|
||||
[[package]]
|
||||
name = "backtrace"
|
||||
version = "0.3.66"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "cab84319d616cfb654d03394f38ab7e6f0919e181b1b57e1fd15e7fb4077d9a7"
|
||||
dependencies = [
|
||||
"addr2line",
|
||||
"cc",
|
||||
"cfg-if",
|
||||
"libc",
|
||||
"miniz_oxide",
|
||||
"object",
|
||||
"rustc-demangle",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cc"
|
||||
version = "1.0.77"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e9f73505338f7d905b19d18738976aae232eb46b8efc15554ffc56deb5d9ebe4"
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
||||
|
||||
[[package]]
|
||||
name = "color-eyre"
|
||||
version = "0.6.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5a667583cca8c4f8436db8de46ea8233c42a7d9ae424a82d338f2e4675229204"
|
||||
dependencies = [
|
||||
"backtrace",
|
||||
"color-spantrace",
|
||||
"eyre",
|
||||
"indenter",
|
||||
"once_cell",
|
||||
"owo-colors",
|
||||
"tracing-error",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "color-spantrace"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1ba75b3d9449ecdccb27ecbc479fdc0b87fa2dd43d2f8298f9bf0e59aacc8dce"
|
||||
dependencies = [
|
||||
"once_cell",
|
||||
"owo-colors",
|
||||
"tracing-core",
|
||||
"tracing-error",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "day5"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"color-eyre",
|
||||
"itertools",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "either"
|
||||
version = "1.8.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797"
|
||||
|
||||
[[package]]
|
||||
name = "eyre"
|
||||
version = "0.6.8"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4c2b6b5a29c02cdc822728b7d7b8ae1bab3e3b05d44522770ddd49722eeac7eb"
|
||||
dependencies = [
|
||||
"indenter",
|
||||
"once_cell",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "gimli"
|
||||
version = "0.26.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d"
|
||||
|
||||
[[package]]
|
||||
name = "indenter"
|
||||
version = "0.3.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683"
|
||||
|
||||
[[package]]
|
||||
name = "itertools"
|
||||
version = "0.10.5"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
|
||||
dependencies = [
|
||||
"either",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "lazy_static"
|
||||
version = "1.4.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
|
||||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.138"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "db6d7e329c562c5dfab7a46a2afabc8b987ab9a4834c9d1ca04dc54c1546cef8"
|
||||
|
||||
[[package]]
|
||||
name = "memchr"
|
||||
version = "2.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
|
||||
|
||||
[[package]]
|
||||
name = "miniz_oxide"
|
||||
version = "0.5.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "96590ba8f175222643a85693f33d26e9c8a015f599c216509b1a6894af675d34"
|
||||
dependencies = [
|
||||
"adler",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "object"
|
||||
version = "0.29.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "21158b2c33aa6d4561f1c0a6ea283ca92bc54802a93b263e910746d679a7eb53"
|
||||
dependencies = [
|
||||
"memchr",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "once_cell"
|
||||
version = "1.16.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860"
|
||||
|
||||
[[package]]
|
||||
name = "owo-colors"
|
||||
version = "3.5.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f"
|
||||
|
||||
[[package]]
|
||||
name = "pin-project-lite"
|
||||
version = "0.2.9"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
|
||||
|
||||
[[package]]
|
||||
name = "rustc-demangle"
|
||||
version = "0.1.21"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342"
|
||||
|
||||
[[package]]
|
||||
name = "sharded-slab"
|
||||
version = "0.1.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31"
|
||||
dependencies = [
|
||||
"lazy_static",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "thread_local"
|
||||
version = "1.1.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180"
|
||||
dependencies = [
|
||||
"once_cell",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tracing"
|
||||
version = "0.1.37"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"
|
||||
dependencies = [
|
||||
"cfg-if",
|
||||
"pin-project-lite",
|
||||
"tracing-core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tracing-core"
|
||||
version = "0.1.30"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a"
|
||||
dependencies = [
|
||||
"once_cell",
|
||||
"valuable",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tracing-error"
|
||||
version = "0.2.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d686ec1c0f384b1277f097b2f279a2ecc11afe8c133c1aabf036a27cb4cd206e"
|
||||
dependencies = [
|
||||
"tracing",
|
||||
"tracing-subscriber",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tracing-subscriber"
|
||||
version = "0.3.16"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70"
|
||||
dependencies = [
|
||||
"sharded-slab",
|
||||
"thread_local",
|
||||
"tracing-core",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "valuable"
|
||||
version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
|
@ -6,3 +6,5 @@ edition = "2021"
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
color-eyre = "0.6.2"
|
||||
itertools = "0.10.5"
|
||||
|
511
day5/input.txt
Normal file
511
day5/input.txt
Normal file
@ -0,0 +1,511 @@
|
||||
[G] [P] [M]
|
||||
[V] [M] [W] [S] [Q]
|
||||
[N] [N] [G] [H] [T] [F]
|
||||
[J] [W] [V] [Q] [W] [F] [P]
|
||||
[C] [H] [T] [T] [G] [B] [Z] [B]
|
||||
[S] [W] [S] [L] [F] [B] [P] [C] [H]
|
||||
[G] [M] [Q] [S] [Z] [T] [J] [D] [S]
|
||||
[B] [T] [M] [B] [J] [C] [T] [G] [N]
|
||||
1 2 3 4 5 6 7 8 9
|
||||
|
||||
move 2 from 4 to 2
|
||||
move 6 from 9 to 7
|
||||
move 4 from 7 to 2
|
||||
move 2 from 4 to 1
|
||||
move 2 from 6 to 7
|
||||
move 1 from 3 to 8
|
||||
move 4 from 7 to 1
|
||||
move 2 from 3 to 2
|
||||
move 3 from 8 to 5
|
||||
move 3 from 1 to 4
|
||||
move 12 from 2 to 5
|
||||
move 2 from 6 to 8
|
||||
move 12 from 5 to 8
|
||||
move 3 from 7 to 9
|
||||
move 18 from 8 to 9
|
||||
move 2 from 8 to 6
|
||||
move 3 from 2 to 3
|
||||
move 14 from 9 to 4
|
||||
move 1 from 1 to 3
|
||||
move 7 from 9 to 3
|
||||
move 1 from 2 to 1
|
||||
move 8 from 4 to 5
|
||||
move 5 from 6 to 3
|
||||
move 2 from 7 to 9
|
||||
move 3 from 4 to 9
|
||||
move 4 from 9 to 6
|
||||
move 4 from 6 to 1
|
||||
move 8 from 4 to 6
|
||||
move 10 from 1 to 2
|
||||
move 13 from 3 to 2
|
||||
move 17 from 5 to 9
|
||||
move 2 from 5 to 1
|
||||
move 9 from 9 to 7
|
||||
move 1 from 3 to 6
|
||||
move 2 from 1 to 8
|
||||
move 11 from 2 to 4
|
||||
move 5 from 6 to 8
|
||||
move 1 from 6 to 3
|
||||
move 1 from 1 to 4
|
||||
move 3 from 8 to 6
|
||||
move 3 from 2 to 8
|
||||
move 9 from 7 to 9
|
||||
move 4 from 4 to 7
|
||||
move 1 from 9 to 5
|
||||
move 15 from 9 to 7
|
||||
move 7 from 8 to 3
|
||||
move 1 from 5 to 6
|
||||
move 2 from 6 to 9
|
||||
move 8 from 2 to 6
|
||||
move 3 from 4 to 3
|
||||
move 1 from 2 to 5
|
||||
move 4 from 9 to 3
|
||||
move 1 from 3 to 4
|
||||
move 13 from 6 to 2
|
||||
move 1 from 5 to 1
|
||||
move 4 from 4 to 9
|
||||
move 6 from 3 to 2
|
||||
move 11 from 2 to 7
|
||||
move 6 from 3 to 4
|
||||
move 3 from 3 to 2
|
||||
move 1 from 3 to 4
|
||||
move 1 from 1 to 3
|
||||
move 3 from 9 to 2
|
||||
move 1 from 3 to 1
|
||||
move 4 from 7 to 1
|
||||
move 1 from 9 to 5
|
||||
move 5 from 1 to 4
|
||||
move 11 from 2 to 4
|
||||
move 1 from 5 to 3
|
||||
move 1 from 2 to 3
|
||||
move 12 from 4 to 2
|
||||
move 2 from 7 to 2
|
||||
move 7 from 4 to 3
|
||||
move 5 from 4 to 1
|
||||
move 7 from 7 to 6
|
||||
move 4 from 1 to 8
|
||||
move 1 from 8 to 5
|
||||
move 8 from 3 to 2
|
||||
move 4 from 7 to 4
|
||||
move 13 from 7 to 1
|
||||
move 2 from 8 to 6
|
||||
move 5 from 4 to 9
|
||||
move 1 from 3 to 6
|
||||
move 1 from 5 to 8
|
||||
move 1 from 2 to 9
|
||||
move 4 from 2 to 6
|
||||
move 2 from 8 to 6
|
||||
move 10 from 1 to 3
|
||||
move 4 from 9 to 4
|
||||
move 2 from 1 to 3
|
||||
move 5 from 2 to 9
|
||||
move 4 from 9 to 2
|
||||
move 1 from 1 to 2
|
||||
move 13 from 2 to 4
|
||||
move 15 from 4 to 5
|
||||
move 3 from 6 to 8
|
||||
move 8 from 3 to 8
|
||||
move 1 from 4 to 2
|
||||
move 14 from 5 to 1
|
||||
move 1 from 5 to 4
|
||||
move 1 from 4 to 2
|
||||
move 8 from 6 to 7
|
||||
move 3 from 6 to 2
|
||||
move 2 from 9 to 1
|
||||
move 8 from 8 to 7
|
||||
move 9 from 1 to 5
|
||||
move 7 from 5 to 3
|
||||
move 14 from 7 to 9
|
||||
move 2 from 2 to 3
|
||||
move 7 from 2 to 1
|
||||
move 1 from 6 to 1
|
||||
move 4 from 9 to 2
|
||||
move 8 from 3 to 6
|
||||
move 2 from 4 to 3
|
||||
move 4 from 3 to 5
|
||||
move 5 from 5 to 7
|
||||
move 2 from 6 to 9
|
||||
move 6 from 6 to 2
|
||||
move 4 from 2 to 3
|
||||
move 1 from 6 to 2
|
||||
move 2 from 7 to 8
|
||||
move 13 from 9 to 5
|
||||
move 2 from 7 to 1
|
||||
move 14 from 1 to 5
|
||||
move 15 from 5 to 7
|
||||
move 3 from 8 to 7
|
||||
move 5 from 3 to 5
|
||||
move 6 from 5 to 7
|
||||
move 4 from 1 to 7
|
||||
move 1 from 2 to 5
|
||||
move 3 from 2 to 8
|
||||
move 11 from 5 to 2
|
||||
move 10 from 7 to 1
|
||||
move 1 from 3 to 4
|
||||
move 10 from 2 to 9
|
||||
move 1 from 5 to 8
|
||||
move 6 from 7 to 3
|
||||
move 1 from 4 to 6
|
||||
move 2 from 3 to 8
|
||||
move 1 from 2 to 1
|
||||
move 4 from 3 to 9
|
||||
move 3 from 1 to 6
|
||||
move 2 from 7 to 1
|
||||
move 1 from 5 to 6
|
||||
move 1 from 3 to 8
|
||||
move 4 from 1 to 4
|
||||
move 5 from 2 to 9
|
||||
move 3 from 1 to 4
|
||||
move 18 from 9 to 7
|
||||
move 4 from 8 to 4
|
||||
move 3 from 1 to 2
|
||||
move 1 from 9 to 7
|
||||
move 1 from 4 to 7
|
||||
move 1 from 6 to 2
|
||||
move 1 from 2 to 5
|
||||
move 25 from 7 to 3
|
||||
move 7 from 4 to 2
|
||||
move 8 from 7 to 9
|
||||
move 4 from 8 to 6
|
||||
move 1 from 8 to 5
|
||||
move 4 from 6 to 5
|
||||
move 2 from 9 to 5
|
||||
move 3 from 5 to 8
|
||||
move 4 from 6 to 4
|
||||
move 12 from 3 to 5
|
||||
move 11 from 3 to 2
|
||||
move 13 from 5 to 8
|
||||
move 4 from 9 to 6
|
||||
move 7 from 4 to 9
|
||||
move 2 from 6 to 2
|
||||
move 12 from 2 to 7
|
||||
move 1 from 6 to 3
|
||||
move 1 from 5 to 6
|
||||
move 2 from 5 to 3
|
||||
move 15 from 8 to 6
|
||||
move 4 from 6 to 7
|
||||
move 1 from 5 to 1
|
||||
move 10 from 2 to 8
|
||||
move 8 from 8 to 3
|
||||
move 8 from 6 to 8
|
||||
move 2 from 7 to 6
|
||||
move 9 from 9 to 7
|
||||
move 8 from 8 to 9
|
||||
move 1 from 1 to 3
|
||||
move 1 from 2 to 7
|
||||
move 7 from 3 to 1
|
||||
move 3 from 8 to 5
|
||||
move 3 from 1 to 6
|
||||
move 7 from 9 to 2
|
||||
move 2 from 3 to 7
|
||||
move 5 from 7 to 9
|
||||
move 17 from 7 to 5
|
||||
move 2 from 7 to 6
|
||||
move 10 from 6 to 3
|
||||
move 1 from 1 to 3
|
||||
move 6 from 9 to 3
|
||||
move 1 from 2 to 9
|
||||
move 2 from 7 to 9
|
||||
move 2 from 9 to 7
|
||||
move 1 from 5 to 8
|
||||
move 1 from 8 to 5
|
||||
move 6 from 2 to 5
|
||||
move 1 from 6 to 1
|
||||
move 5 from 3 to 5
|
||||
move 1 from 6 to 8
|
||||
move 1 from 7 to 9
|
||||
move 2 from 9 to 3
|
||||
move 15 from 5 to 2
|
||||
move 2 from 1 to 8
|
||||
move 2 from 3 to 7
|
||||
move 2 from 8 to 3
|
||||
move 3 from 5 to 9
|
||||
move 1 from 8 to 6
|
||||
move 1 from 9 to 6
|
||||
move 3 from 7 to 6
|
||||
move 17 from 3 to 4
|
||||
move 1 from 1 to 2
|
||||
move 6 from 2 to 9
|
||||
move 16 from 4 to 1
|
||||
move 4 from 6 to 8
|
||||
move 9 from 5 to 6
|
||||
move 8 from 6 to 2
|
||||
move 2 from 9 to 5
|
||||
move 2 from 3 to 5
|
||||
move 1 from 6 to 2
|
||||
move 1 from 4 to 8
|
||||
move 14 from 1 to 3
|
||||
move 8 from 5 to 3
|
||||
move 20 from 3 to 1
|
||||
move 1 from 8 to 2
|
||||
move 1 from 9 to 6
|
||||
move 1 from 6 to 7
|
||||
move 1 from 7 to 3
|
||||
move 22 from 1 to 2
|
||||
move 3 from 3 to 6
|
||||
move 27 from 2 to 8
|
||||
move 2 from 2 to 8
|
||||
move 2 from 6 to 9
|
||||
move 2 from 9 to 4
|
||||
move 2 from 4 to 8
|
||||
move 1 from 1 to 3
|
||||
move 14 from 8 to 5
|
||||
move 1 from 3 to 9
|
||||
move 3 from 9 to 2
|
||||
move 5 from 2 to 8
|
||||
move 10 from 2 to 9
|
||||
move 1 from 6 to 7
|
||||
move 1 from 7 to 5
|
||||
move 7 from 5 to 2
|
||||
move 2 from 9 to 2
|
||||
move 1 from 6 to 2
|
||||
move 2 from 9 to 5
|
||||
move 3 from 5 to 6
|
||||
move 6 from 5 to 3
|
||||
move 1 from 5 to 6
|
||||
move 4 from 3 to 9
|
||||
move 2 from 9 to 8
|
||||
move 3 from 9 to 5
|
||||
move 23 from 8 to 1
|
||||
move 2 from 6 to 1
|
||||
move 1 from 5 to 7
|
||||
move 2 from 3 to 5
|
||||
move 2 from 9 to 5
|
||||
move 4 from 9 to 7
|
||||
move 2 from 9 to 4
|
||||
move 1 from 5 to 4
|
||||
move 5 from 8 to 5
|
||||
move 2 from 6 to 2
|
||||
move 3 from 7 to 3
|
||||
move 1 from 3 to 4
|
||||
move 3 from 2 to 8
|
||||
move 4 from 1 to 6
|
||||
move 2 from 6 to 3
|
||||
move 4 from 1 to 2
|
||||
move 3 from 8 to 1
|
||||
move 13 from 2 to 5
|
||||
move 4 from 3 to 2
|
||||
move 14 from 5 to 7
|
||||
move 5 from 2 to 7
|
||||
move 18 from 7 to 9
|
||||
move 4 from 4 to 7
|
||||
move 2 from 5 to 4
|
||||
move 17 from 9 to 5
|
||||
move 1 from 9 to 1
|
||||
move 1 from 7 to 2
|
||||
move 5 from 7 to 2
|
||||
move 18 from 1 to 4
|
||||
move 1 from 7 to 3
|
||||
move 1 from 3 to 6
|
||||
move 2 from 1 to 3
|
||||
move 1 from 6 to 5
|
||||
move 2 from 6 to 8
|
||||
move 1 from 8 to 9
|
||||
move 1 from 8 to 3
|
||||
move 13 from 4 to 5
|
||||
move 1 from 1 to 6
|
||||
move 3 from 2 to 4
|
||||
move 1 from 6 to 1
|
||||
move 3 from 2 to 9
|
||||
move 3 from 3 to 1
|
||||
move 5 from 4 to 5
|
||||
move 30 from 5 to 3
|
||||
move 1 from 4 to 6
|
||||
move 1 from 9 to 8
|
||||
move 1 from 9 to 6
|
||||
move 21 from 3 to 7
|
||||
move 3 from 1 to 6
|
||||
move 1 from 1 to 4
|
||||
move 1 from 9 to 6
|
||||
move 1 from 8 to 2
|
||||
move 1 from 3 to 6
|
||||
move 1 from 9 to 3
|
||||
move 5 from 4 to 8
|
||||
move 1 from 2 to 4
|
||||
move 9 from 5 to 7
|
||||
move 2 from 5 to 9
|
||||
move 2 from 8 to 2
|
||||
move 2 from 6 to 3
|
||||
move 1 from 4 to 1
|
||||
move 4 from 3 to 8
|
||||
move 2 from 9 to 2
|
||||
move 4 from 2 to 6
|
||||
move 1 from 1 to 4
|
||||
move 2 from 6 to 9
|
||||
move 2 from 5 to 4
|
||||
move 1 from 3 to 1
|
||||
move 1 from 1 to 3
|
||||
move 2 from 9 to 1
|
||||
move 5 from 3 to 5
|
||||
move 1 from 1 to 8
|
||||
move 4 from 6 to 4
|
||||
move 5 from 5 to 6
|
||||
move 18 from 7 to 5
|
||||
move 1 from 3 to 4
|
||||
move 12 from 7 to 5
|
||||
move 15 from 5 to 6
|
||||
move 1 from 5 to 8
|
||||
move 1 from 3 to 7
|
||||
move 1 from 1 to 2
|
||||
move 1 from 2 to 4
|
||||
move 1 from 7 to 9
|
||||
move 2 from 8 to 2
|
||||
move 1 from 2 to 4
|
||||
move 4 from 4 to 2
|
||||
move 1 from 2 to 1
|
||||
move 1 from 9 to 8
|
||||
move 4 from 6 to 4
|
||||
move 3 from 2 to 6
|
||||
move 1 from 2 to 6
|
||||
move 8 from 4 to 3
|
||||
move 1 from 1 to 3
|
||||
move 6 from 6 to 1
|
||||
move 1 from 3 to 6
|
||||
move 5 from 1 to 7
|
||||
move 10 from 5 to 9
|
||||
move 3 from 9 to 8
|
||||
move 7 from 6 to 2
|
||||
move 1 from 7 to 8
|
||||
move 3 from 5 to 8
|
||||
move 3 from 6 to 2
|
||||
move 6 from 8 to 9
|
||||
move 1 from 5 to 3
|
||||
move 2 from 3 to 1
|
||||
move 2 from 4 to 8
|
||||
move 6 from 6 to 9
|
||||
move 1 from 1 to 4
|
||||
move 17 from 9 to 2
|
||||
move 1 from 4 to 1
|
||||
move 2 from 7 to 8
|
||||
move 1 from 9 to 8
|
||||
move 3 from 8 to 4
|
||||
move 3 from 1 to 4
|
||||
move 9 from 8 to 2
|
||||
move 1 from 8 to 4
|
||||
move 12 from 2 to 7
|
||||
move 4 from 7 to 4
|
||||
move 1 from 8 to 1
|
||||
move 10 from 4 to 2
|
||||
move 3 from 3 to 2
|
||||
move 1 from 9 to 7
|
||||
move 11 from 7 to 3
|
||||
move 1 from 3 to 1
|
||||
move 2 from 3 to 9
|
||||
move 1 from 3 to 7
|
||||
move 2 from 1 to 9
|
||||
move 1 from 6 to 5
|
||||
move 7 from 3 to 6
|
||||
move 1 from 7 to 3
|
||||
move 3 from 3 to 4
|
||||
move 1 from 5 to 7
|
||||
move 2 from 4 to 3
|
||||
move 2 from 4 to 8
|
||||
move 1 from 7 to 6
|
||||
move 2 from 6 to 8
|
||||
move 1 from 9 to 2
|
||||
move 1 from 9 to 5
|
||||
move 1 from 5 to 1
|
||||
move 1 from 8 to 6
|
||||
move 1 from 3 to 2
|
||||
move 4 from 6 to 1
|
||||
move 5 from 1 to 4
|
||||
move 11 from 2 to 4
|
||||
move 2 from 8 to 2
|
||||
move 1 from 8 to 9
|
||||
move 27 from 2 to 5
|
||||
move 4 from 6 to 3
|
||||
move 3 from 2 to 4
|
||||
move 2 from 5 to 9
|
||||
move 1 from 5 to 7
|
||||
move 2 from 9 to 5
|
||||
move 14 from 4 to 7
|
||||
move 2 from 4 to 7
|
||||
move 3 from 4 to 8
|
||||
move 4 from 3 to 1
|
||||
move 4 from 1 to 8
|
||||
move 2 from 3 to 9
|
||||
move 2 from 9 to 3
|
||||
move 7 from 8 to 9
|
||||
move 1 from 3 to 8
|
||||
move 2 from 3 to 2
|
||||
move 25 from 5 to 9
|
||||
move 1 from 5 to 8
|
||||
move 1 from 8 to 7
|
||||
move 26 from 9 to 1
|
||||
move 23 from 1 to 5
|
||||
move 7 from 9 to 7
|
||||
move 1 from 9 to 8
|
||||
move 1 from 9 to 2
|
||||
move 5 from 7 to 1
|
||||
move 20 from 5 to 6
|
||||
move 1 from 7 to 6
|
||||
move 2 from 5 to 3
|
||||
move 1 from 8 to 6
|
||||
move 21 from 6 to 8
|
||||
move 1 from 6 to 4
|
||||
move 1 from 1 to 7
|
||||
move 2 from 1 to 6
|
||||
move 1 from 1 to 3
|
||||
move 1 from 2 to 5
|
||||
move 1 from 2 to 6
|
||||
move 2 from 7 to 6
|
||||
move 6 from 7 to 9
|
||||
move 3 from 1 to 2
|
||||
move 17 from 8 to 1
|
||||
move 1 from 4 to 1
|
||||
move 2 from 6 to 9
|
||||
move 3 from 8 to 9
|
||||
move 2 from 3 to 7
|
||||
move 2 from 9 to 8
|
||||
move 4 from 7 to 3
|
||||
move 4 from 3 to 4
|
||||
move 2 from 5 to 8
|
||||
move 4 from 8 to 4
|
||||
move 3 from 6 to 8
|
||||
move 18 from 1 to 5
|
||||
move 1 from 3 to 4
|
||||
move 3 from 2 to 4
|
||||
move 5 from 9 to 1
|
||||
move 10 from 7 to 5
|
||||
move 5 from 1 to 3
|
||||
move 5 from 3 to 5
|
||||
move 5 from 4 to 3
|
||||
move 2 from 4 to 2
|
||||
move 5 from 8 to 3
|
||||
move 25 from 5 to 2
|
||||
move 3 from 3 to 6
|
||||
move 1 from 1 to 3
|
||||
move 3 from 6 to 7
|
||||
move 1 from 4 to 2
|
||||
move 1 from 5 to 8
|
||||
move 2 from 4 to 9
|
||||
move 1 from 8 to 1
|
||||
move 20 from 2 to 7
|
||||
move 10 from 7 to 1
|
||||
move 1 from 1 to 7
|
||||
move 4 from 7 to 8
|
||||
move 5 from 5 to 4
|
||||
move 4 from 8 to 6
|
||||
move 1 from 1 to 3
|
||||
move 5 from 7 to 4
|
||||
move 2 from 1 to 5
|
||||
move 4 from 9 to 1
|
||||
move 3 from 2 to 5
|
||||
move 5 from 5 to 1
|
||||
move 1 from 9 to 1
|
||||
move 11 from 1 to 3
|
||||
move 1 from 6 to 2
|
||||
move 7 from 3 to 5
|
||||
move 11 from 3 to 7
|
||||
move 1 from 2 to 6
|
||||
move 7 from 7 to 8
|
||||
move 1 from 9 to 1
|
||||
move 2 from 3 to 1
|
||||
move 1 from 5 to 3
|
||||
move 4 from 1 to 6
|
||||
move 4 from 6 to 3
|
||||
move 9 from 4 to 5
|
||||
move 2 from 8 to 2
|
||||
move 4 from 6 to 9
|
||||
move 3 from 2 to 4
|
||||
move 1 from 8 to 6
|
100
day5/src/main.rs
100
day5/src/main.rs
@ -1,3 +1,99 @@
|
||||
fn main() {
|
||||
println!("Hello, world!");
|
||||
use std::{fs::read_to_string, str::Lines};
|
||||
|
||||
use color_eyre::Result;
|
||||
use itertools::Itertools;
|
||||
|
||||
fn parse_stacks(input: &mut Lines) -> Vec<Vec<char>> {
|
||||
let horizontal_stack = input
|
||||
.map(|line| {
|
||||
line.chars()
|
||||
.skip(1)
|
||||
.step_by(4)
|
||||
.map(|c| if c.is_whitespace() { None } else { Some(c) })
|
||||
.collect::<Vec<_>>()
|
||||
})
|
||||
.take_while(|line| line.first().unwrap_or(&None) != &Some('1'))
|
||||
.collect::<Vec<_>>();
|
||||
let num_stacks = horizontal_stack.last().map(|v| v.len()).unwrap_or(0);
|
||||
let mut vertical_stack: Vec<Vec<char>> = Vec::with_capacity(num_stacks);
|
||||
for _ in 0..num_stacks {
|
||||
vertical_stack.push(vec![]);
|
||||
}
|
||||
|
||||
for v in horizontal_stack.iter().rev() {
|
||||
for (i, c) in v.iter().enumerate() {
|
||||
if let Some(ch) = c {
|
||||
vertical_stack[i].push(*ch);
|
||||
}
|
||||
}
|
||||
}
|
||||
vertical_stack
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
struct Move {
|
||||
pub amount: usize,
|
||||
pub from: usize,
|
||||
pub to: usize,
|
||||
}
|
||||
|
||||
impl Move {
|
||||
fn play9000(&self, stacks: &mut [Vec<char>]) {
|
||||
for _ in 0..self.amount {
|
||||
if let Some(element) = stacks[self.from].pop() {
|
||||
stacks[self.to].push(element);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn play9001(&self, stacks: &mut [Vec<char>]) {
|
||||
let i = stacks[self.from].len() - self.amount;
|
||||
let mut moving = stacks[self.from].split_off(i);
|
||||
stacks[self.to].append(&mut moving);
|
||||
}
|
||||
}
|
||||
|
||||
fn parse_move(line: &str) -> Move {
|
||||
let (amount, from, to) = line
|
||||
.split_whitespace()
|
||||
.skip(1)
|
||||
.step_by(2)
|
||||
.map(|s| s.parse::<usize>().unwrap_or(0))
|
||||
.take(3)
|
||||
.collect_tuple()
|
||||
.unwrap_or((0, 0, 0));
|
||||
Move {
|
||||
amount,
|
||||
from: from - 1,
|
||||
to: to - 1,
|
||||
}
|
||||
}
|
||||
|
||||
fn main() -> Result<()> {
|
||||
let input = read_to_string("input.txt")?;
|
||||
let mut lines = input.lines();
|
||||
let mut stacks9000 = parse_stacks(&mut lines);
|
||||
let mut stacks9001 = stacks9000.clone();
|
||||
let moves = lines.skip(1).map(parse_move);
|
||||
for m in moves {
|
||||
m.play9000(&mut stacks9000);
|
||||
m.play9001(&mut stacks9001);
|
||||
}
|
||||
let top9000 = stacks9000
|
||||
.iter()
|
||||
.map(|stack| stack.last().unwrap_or(&' '))
|
||||
.fold(String::new(), |mut s, v| {
|
||||
s.push(*v);
|
||||
s
|
||||
});
|
||||
let top9001 = stacks9001
|
||||
.iter()
|
||||
.map(|stack| stack.last().unwrap_or(&' '))
|
||||
.fold(String::new(), |mut s, v| {
|
||||
s.push(*v);
|
||||
s
|
||||
});
|
||||
println!("top crates 9000: {top9000}");
|
||||
println!("top crates 9001: {top9001}");
|
||||
Ok(())
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user