Day 5
This commit is contained in:
		
							
								
								
									
										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(()) | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user