Compare commits
51 Commits
master
...
7ea1b80afe
Author | SHA1 | Date | |
---|---|---|---|
7ea1b80afe | |||
f2d6ff15e8 | |||
1c41e885ad | |||
e40e06510b | |||
8a2aa96881 | |||
052d21f132 | |||
c09126a27e | |||
dfb8421dec | |||
d42491f71a | |||
8ae3092389 | |||
a0b13e4f3e | |||
8787215fdf | |||
bf4760a83c | |||
2f467ae7d7 | |||
fe66170e3e | |||
1e9d553c22 | |||
982dac721f | |||
df71a1f787 | |||
ad889622d5 | |||
a3d1031b05 | |||
d23fee8c4b | |||
ab0889b661 | |||
8509a884ff | |||
b4f9e56227 | |||
17733c951f | |||
5ee94b1a86 | |||
e1ebbedc27 | |||
7a1141f5ee | |||
cb204b8d62 | |||
3cca0097ed | |||
e5f6c540c9 | |||
a579c099d7 | |||
8ca945007b | |||
7b45a4748c | |||
8a2f37c67f | |||
f73bc65d9f | |||
a9127c3301 | |||
ab92541119 | |||
3bd486af95 | |||
e54aad2d33 | |||
8ae82163b4 | |||
5a02a5bbe9 | |||
a96624e0a0 | |||
be1cd454fe | |||
38f1b5a037 | |||
8dc9b8fcbb | |||
d8f191fd9b | |||
77cb399748 | |||
beeb89a2f6 | |||
64851dd68b | |||
2fd479d02d |
3
.nova/Configuration.json
Normal file
3
.nova/Configuration.json
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"editor.default_syntax" : "rust"
|
||||||
|
}
|
12
.nova/Tasks/Cargo.json
Normal file
12
.nova/Tasks/Cargo.json
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"buildBeforeRunning" : true,
|
||||||
|
"extension" : {
|
||||||
|
"identifier" : "com.kilb.rust",
|
||||||
|
"name" : "Rust"
|
||||||
|
},
|
||||||
|
"extensionTemplate" : "cargo",
|
||||||
|
"extensionValues" : {
|
||||||
|
|
||||||
|
},
|
||||||
|
"openLogOnRun" : "start"
|
||||||
|
}
|
@ -1,5 +1,8 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<module type="RUST_MODULE" version="4">
|
<module type="RUST_MODULE" version="4">
|
||||||
|
<component name="CheckStyle-IDEA-Module" serialisationVersion="2">
|
||||||
|
<option name="activeLocationsIds" />
|
||||||
|
</component>
|
||||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||||
<exclude-output />
|
<exclude-output />
|
||||||
<content url="file://$MODULE_DIR$">
|
<content url="file://$MODULE_DIR$">
|
||||||
|
135
Cargo.lock
generated
135
Cargo.lock
generated
@ -4,9 +4,9 @@ version = 3
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "aho-corasick"
|
name = "aho-corasick"
|
||||||
version = "0.7.19"
|
version = "0.7.20"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e"
|
checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"memchr",
|
"memchr",
|
||||||
]
|
]
|
||||||
@ -25,7 +25,11 @@ name = "aoc-2022"
|
|||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"chrono",
|
"chrono",
|
||||||
|
"indextree",
|
||||||
|
"itertools",
|
||||||
"regex",
|
"regex",
|
||||||
|
"sscanf",
|
||||||
|
"tuple-map",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
@ -42,9 +46,9 @@ checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cc"
|
name = "cc"
|
||||||
version = "1.0.76"
|
version = "1.0.77"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "76a284da2e6fe2092f2353e51713435363112dfd60030e22add80be333fb928f"
|
checksum = "e9f73505338f7d905b19d18738976aae232eb46b8efc15554ffc56deb5d9ebe4"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cfg-if"
|
name = "cfg-if"
|
||||||
@ -77,6 +81,26 @@ dependencies = [
|
|||||||
"unicode-width",
|
"unicode-width",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "const_format"
|
||||||
|
version = "0.2.30"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7309d9b4d3d2c0641e018d449232f2e28f1b22933c137f157d3dbc14228b8c0e"
|
||||||
|
dependencies = [
|
||||||
|
"const_format_proc_macros",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "const_format_proc_macros"
|
||||||
|
version = "0.2.29"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d897f47bf7270cf70d370f8f98c1abb6d2d4cf60a6845d30e05bfb90c6568650"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"unicode-xid",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "core-foundation-sys"
|
name = "core-foundation-sys"
|
||||||
version = "0.8.3"
|
version = "0.8.3"
|
||||||
@ -85,9 +109,9 @@ checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cxx"
|
name = "cxx"
|
||||||
version = "1.0.81"
|
version = "1.0.83"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "97abf9f0eca9e52b7f81b945524e76710e6cb2366aead23b7d4fbf72e281f888"
|
checksum = "bdf07d07d6531bfcdbe9b8b739b104610c6508dcc4d63b410585faf338241daf"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cc",
|
"cc",
|
||||||
"cxxbridge-flags",
|
"cxxbridge-flags",
|
||||||
@ -97,9 +121,9 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cxx-build"
|
name = "cxx-build"
|
||||||
version = "1.0.81"
|
version = "1.0.83"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "7cc32cc5fea1d894b77d269ddb9f192110069a8a9c1f1d441195fba90553dea3"
|
checksum = "d2eb5b96ecdc99f72657332953d4d9c50135af1bac34277801cc3937906ebd39"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cc",
|
"cc",
|
||||||
"codespan-reporting",
|
"codespan-reporting",
|
||||||
@ -112,21 +136,27 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cxxbridge-flags"
|
name = "cxxbridge-flags"
|
||||||
version = "1.0.81"
|
version = "1.0.83"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8ca220e4794c934dc6b1207c3b42856ad4c302f2df1712e9f8d2eec5afaacf1f"
|
checksum = "ac040a39517fd1674e0f32177648334b0f4074625b5588a64519804ba0553b12"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "cxxbridge-macro"
|
name = "cxxbridge-macro"
|
||||||
version = "1.0.81"
|
version = "1.0.83"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "b846f081361125bfc8dc9d3940c84e1fd83ba54bbca7b17cd29483c828be0704"
|
checksum = "1362b0ddcfc4eb0a1f57b68bd77dd99f0e826958a96abd0ae9bd092e114ffed6"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"syn",
|
"syn",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "either"
|
||||||
|
version = "1.8.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "iana-time-zone"
|
name = "iana-time-zone"
|
||||||
version = "0.1.53"
|
version = "0.1.53"
|
||||||
@ -151,6 +181,21 @@ dependencies = [
|
|||||||
"cxx-build",
|
"cxx-build",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "indextree"
|
||||||
|
version = "4.5.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "497f036ac2fae75c34224648a77802e5dd4e9cfb56f4713ab6b12b7160a0523b"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "itertools"
|
||||||
|
version = "0.10.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
|
||||||
|
dependencies = [
|
||||||
|
"either",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "js-sys"
|
name = "js-sys"
|
||||||
version = "0.3.60"
|
version = "0.3.60"
|
||||||
@ -161,10 +206,16 @@ dependencies = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "libc"
|
name = "lazy_static"
|
||||||
version = "0.2.137"
|
version = "1.4.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89"
|
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "libc"
|
||||||
|
version = "0.2.138"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "db6d7e329c562c5dfab7a46a2afabc8b987ab9a4834c9d1ca04dc54c1546cef8"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "link-cplusplus"
|
name = "link-cplusplus"
|
||||||
@ -257,10 +308,42 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
|
|||||||
checksum = "9c8132065adcfd6e02db789d9285a0deb2f3fcb04002865ab67d5fb103533898"
|
checksum = "9c8132065adcfd6e02db789d9285a0deb2f3fcb04002865ab67d5fb103533898"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "syn"
|
name = "sscanf"
|
||||||
version = "1.0.103"
|
version = "0.4.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a864042229133ada95abf3b54fdc62ef5ccabe9515b64717bcb9a1919e59445d"
|
checksum = "887a5b09bbf30cc01d059ccb4b7a0b508a0cef3028df2f2ee0d745bc9e624c56"
|
||||||
|
dependencies = [
|
||||||
|
"const_format",
|
||||||
|
"lazy_static",
|
||||||
|
"regex",
|
||||||
|
"sscanf_macro",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "sscanf_macro"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b124cd4c68600cc3188a26987b1c3bed8cadcfd1be93124026096c668f2c0ee8"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"regex-syntax",
|
||||||
|
"strsim",
|
||||||
|
"syn",
|
||||||
|
"unicode-width",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "strsim"
|
||||||
|
version = "0.10.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "syn"
|
||||||
|
version = "1.0.105"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "60b9b43d45702de4c839cb9b51d9f529c5dd26a4aff255b42b1ebc03e88ee908"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
@ -278,15 +361,21 @@ dependencies = [
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "time"
|
name = "time"
|
||||||
version = "0.1.44"
|
version = "0.1.45"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255"
|
checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"libc",
|
"libc",
|
||||||
"wasi",
|
"wasi",
|
||||||
"winapi",
|
"winapi",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tuple-map"
|
||||||
|
version = "0.4.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "23d5919d7121237af683b7fa982450597b1eaa2643e597aec3b519e4e5ab3d62"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "unicode-ident"
|
name = "unicode-ident"
|
||||||
version = "1.0.5"
|
version = "1.0.5"
|
||||||
@ -299,6 +388,12 @@ version = "0.1.10"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
|
checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "unicode-xid"
|
||||||
|
version = "0.2.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "wasi"
|
name = "wasi"
|
||||||
version = "0.10.0+wasi-snapshot-preview1"
|
version = "0.10.0+wasi-snapshot-preview1"
|
||||||
|
50
Cargo.toml
50
Cargo.toml
@ -7,33 +7,37 @@ edition = "2021"
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
chrono = "0.4.23"
|
chrono = "0.4.23"
|
||||||
|
indextree = "4.5.0"
|
||||||
|
itertools = "0.10.5"
|
||||||
regex = "1.7.0"
|
regex = "1.7.0"
|
||||||
|
sscanf = "0.4.0"
|
||||||
|
tuple-map = "0.4.0"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
default = ["a", "b", "today"]
|
default = ["part1", "part2", "today"]
|
||||||
a = []
|
part1 = []
|
||||||
b = []
|
part2 = []
|
||||||
today = []
|
today = []
|
||||||
01 = []
|
day01 = []
|
||||||
02 = []
|
day02 = []
|
||||||
03 = []
|
day03 = []
|
||||||
04 = []
|
day04 = []
|
||||||
05 = []
|
day05 = []
|
||||||
06 = []
|
day06 = []
|
||||||
07 = []
|
day07 = []
|
||||||
08 = []
|
day08 = []
|
||||||
09 = []
|
day09 = []
|
||||||
10 = []
|
day10 = []
|
||||||
11 = []
|
day11 = []
|
||||||
12 = []
|
day12 = []
|
||||||
13 = []
|
day13 = []
|
||||||
14 = []
|
day14 = []
|
||||||
15 = []
|
day15 = []
|
||||||
16 = []
|
day16 = []
|
||||||
17 = []
|
day17 = []
|
||||||
18 = []
|
day18 = []
|
||||||
19 = []
|
day19 = []
|
||||||
20 = []
|
day20 = []
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2235
input/01.txt
2235
input/01.txt
File diff suppressed because it is too large
Load Diff
2500
input/02.txt
Normal file
2500
input/02.txt
Normal file
File diff suppressed because it is too large
Load Diff
300
input/03.txt
Normal file
300
input/03.txt
Normal file
@ -0,0 +1,300 @@
|
|||||||
|
sfDRhjhHsHhgWPJvPmmQnmPqnW
|
||||||
|
pTddGVwcpMTTCdnQJqqQqqqVtVms
|
||||||
|
MdZCZGdcrCNRFZRhFssL
|
||||||
|
CttWnSnNfSnCHsWrTlTPPpPCTRrLpl
|
||||||
|
DgqqghjqJBVgDMTPGVlRGwbfLLGP
|
||||||
|
cgqBBhjqcBdMcWQcQNnNzsfv
|
||||||
|
lnDWMgTLlTFlHHgDDgngWFnlBWNcBQrdjcrrdQrPBrdjhWhj
|
||||||
|
JqSVRRVmmRqJJbZGGJqJvbmBNcjPNQNssQPhSSdwPwwwQr
|
||||||
|
bCRJqGJJmzmJZRCmFNTLTttTzfFfLglf
|
||||||
|
SPWvWMvCSPcjzjDbcwfjTl
|
||||||
|
lLNRNLqhhQVQJlRjrjrDwTzzqzzfrb
|
||||||
|
GRnRVhRJLFnnhtJQNVdLdLgWCmmZlMlgSCSWSgpZtPBM
|
||||||
|
pTGFrLFTFWFprLDBmLbSbtmBDb
|
||||||
|
MqjwqJwZlqJjHlqjHHPmSbsffDmsStDnHnQmsm
|
||||||
|
ZPJjVPZbVMRRPZwMJZVMNJMcGWpWFcWFFNFGrWTzWzFrzG
|
||||||
|
MffZZtMTnTtSZLdfgSMtCHSbmWsGwbHGSqvmCqWb
|
||||||
|
lzpQhrhphhlzDDhRPmBvqHGRbBbwbbssCB
|
||||||
|
JJljpvhFrrjhptnddMJfdtgnMT
|
||||||
|
drCtpNLCLpTpJSdswQhvDbHZHDLDHQ
|
||||||
|
WmWgBWRcRzVVWVBgBBnnlfgWHjmvjQhwbbbshQvZDQQjsHZC
|
||||||
|
fqBzggWPPzBWBzffcfnMJdtFtrpqrGMpdCCTdM
|
||||||
|
JwJWqNBNNdzzBSzGsqbdNJbVMpptPmZMrVZrrZMtPmPwDp
|
||||||
|
THgfgffffHRhQRLVMGVQmGtLDGmM
|
||||||
|
TjGchhlHhGfhRHgRgWJSqzJWWlqNSzsWSJ
|
||||||
|
dNmPlzdvdspsFWwQmG
|
||||||
|
bhZSbVJBJnLNTnwWVHMGwQsGMFFw
|
||||||
|
RnnbbTnSnSSTTnLfRCCPqDPDNDlfCfDDcr
|
||||||
|
lhhTcnPchPPHCCStwWTHbS
|
||||||
|
GDRFNqlQJsGJqGJDqVNsqssDQBSZWHQBCZHHwbZbtHtwCbZW
|
||||||
|
RNJrFJFJDrmqsVjNmDvrvfzfffcvdpMrvlfh
|
||||||
|
DtLdNGHNfwBJQwgCrncgpSpcnlfC
|
||||||
|
sGqWPMPTvPPhTjjsqRqPvSlzFFpjnnSrjczprgllFF
|
||||||
|
vVPGPGMbPGqTRWsMqZhqvbZNLLmLQddQdmBtBwBNBwNB
|
||||||
|
ChVzhwpdpqHhtNmHHNHt
|
||||||
|
QsjGTQcTWQjfjbssQDPmHgfrrVrPZnntZD
|
||||||
|
jTGJSGvWJwqlvlCBqV
|
||||||
|
pRVcSRffTPfBWfNVfWBWdJdwhvvwGjjFmGvhLTdh
|
||||||
|
qsrHqtbDZqsnsZqCQDtHnQQLwFvJFhGJwddvwLcCwJJJdv
|
||||||
|
sgcqHnzqqzgnHnqrstZzqsnSPllRlVVSNpWVNVRgMBlVPW
|
||||||
|
WRQTtHrTrrDRvQDHrbtJlpdhLdGsDllfspLpphhs
|
||||||
|
GzCSqCSmSmVSpsljphlpsL
|
||||||
|
gVwCVGzmNmCNRQTvJQJHnvwQ
|
||||||
|
psBDsswNjBcqtHtsTHsqtM
|
||||||
|
vQrPqZPmvgQZrfgmPrfJQlLvnLzVHLnSnnTLTnnHMt
|
||||||
|
PRCJRPgmqrmZmmqQQDDRwwNwjwDwpFjDDW
|
||||||
|
VtBgCqbVjPbSbHtPRdrssZMFZlrRsBRw
|
||||||
|
LzWmhcDqTDvnDWTFMrwRvwFrGZdGlZ
|
||||||
|
zJLczJDnWDpDNzmDczWLzWzWNCbbttHPCHbSVbqgHSCjffQf
|
||||||
|
TjTfvJjjvcjTQcDzMDfQTLLbLgVVVhMrWWblghbbLN
|
||||||
|
dZHFSpqpqpbWrhhlWh
|
||||||
|
dFwPBHqFSqwZSmZmSlqZjTvvJTmzcJsTTTjfvsfQ
|
||||||
|
qqqNTlfjzbMGJlHMSZtZzZgRZDgZDzdS
|
||||||
|
nLCCVVcmgCdZdSlg
|
||||||
|
cmQscBVpFsppsVlffQGJHjlWHJGq
|
||||||
|
whwVGGZhVLwhsFFDCTrDccCctrcctL
|
||||||
|
CzSSvPSzTBStSWND
|
||||||
|
HllCHvHJPPqjCPvbfdvvbsmhdRRRsmZhsRdMFQMRFQ
|
||||||
|
gFCfCVfCsLCftsBsDbSHrbJRJJtrmrddrd
|
||||||
|
hqQpqWhlNlpMlppfdTRhmbmTdbdHJH
|
||||||
|
NGvvjvpvpfGgGGDCZZBg
|
||||||
|
rmBtgdddtqmmrqBGbLGJlmctWWvbNzvfpsVVfzzSVSTsWNpz
|
||||||
|
RPDRjMhDFljvsvzlSs
|
||||||
|
wDChhnCQwDwmgJclqrgm
|
||||||
|
WHrrDbWHQPzNrrRVMQJMQGvvsvvjnDLvfsjsvwfGws
|
||||||
|
dhdhZhcphZZZmtFFTcZSmcZsnfqjLRnngnpwnGfqfvvnRs
|
||||||
|
FZcZhtmhFCttldFlSSmlSthQJzNVMbRPWWPJzrbbJCNMPH
|
||||||
|
wMFBpvTppLpwfNfjggmNmGTj
|
||||||
|
ddSDDbGHnRDQDZRHSZSdRZDQzjjrzNNNfnmNrllhgglhfgWg
|
||||||
|
bCQqsJqGDZCHbppwvtVMMvJcLL
|
||||||
|
pSpSVdLDFCvDDvCFvJgwjsJbNtmtJgSjmj
|
||||||
|
ZcWNNBQfwjsttsbc
|
||||||
|
WNQMBflQQNGQrFpFVVRDHpCMDR
|
||||||
|
PfPvqLphWpWLtZSWpWLPjwJbmDwJbbDbmJVjPQ
|
||||||
|
lQQnRGMllMjswrmwJM
|
||||||
|
ggRGFFGGdlGGzFFzzFFcNBvSfLQZShZTtdLWWZWSWZSp
|
||||||
|
lCfgHsVHJDdswNRmsMRQ
|
||||||
|
vccvvFVrPcvQNRdnmqdR
|
||||||
|
rctPBrPBTTpPFBLZZcCCgVHJHVjjbLHfCjfS
|
||||||
|
dfGdsGGrlFFlbWjfgblhJhLDLDDMLNvJNLLBnmLB
|
||||||
|
tSppwQQHSSVtwStSpZZVqRJmBDzLvwPmzJznBDDmLBBJ
|
||||||
|
cHvtpRSvptCRbbjrrcfjrWjf
|
||||||
|
BBdHdjgQdjMMsHJscFnrzLpLgznLFzcF
|
||||||
|
wvllmNmVvZfvmZWqcPptPztFSWLFGrrFnt
|
||||||
|
ZbCvqqmNvflfVTbZfNllsjHdjdhhHDTHRBJjjMsc
|
||||||
|
FNCPtPtgLFJwPwflFwSrLFcMczQZTbMVmzzVZMcNVVVb
|
||||||
|
DhRDdhpWQDZmzVSQ
|
||||||
|
vnhBSHppjRBHqpWvrPFtJLJlLvfLPF
|
||||||
|
nmcSnnWjmfCTcHPHJCvh
|
||||||
|
zdDdlrrzGFFLPtPhBBhH
|
||||||
|
NGNGrzrRrzphwwwMmqqfnsfZZNbSjQSN
|
||||||
|
lgznQGWQLQWlnSzHSQlwnlDhCbZhZhZChPChwDcDphcb
|
||||||
|
jTRvVVrMvmLCPNcNZhRNcD
|
||||||
|
jfftvsrVJLsVvJqsmfqjfjlQgzlQWFzHFGGBQgtFgnnH
|
||||||
|
sllpwssrsCwrTRgCHGCTcnZD
|
||||||
|
jjzJtSdhdzbJWhdQqLdzqSHmDZBGZmmcGGgBGTDRBQTD
|
||||||
|
SVjgVhgtbVzJPfFpvvNrNswV
|
||||||
|
StzdmmnnjSRRdhPPdZZd
|
||||||
|
VbTbCqFFMbZTFcNQLgRgQbvvRh
|
||||||
|
pGsqGGGfHGfZVffzwtrHnmJHllznrS
|
||||||
|
NLWJvtLjtLzBjNSvSMDCHfwHSlDMlSSHfZ
|
||||||
|
RTPTVmhpnprfcfgZwgRD
|
||||||
|
PnPGFhGsTphsFpdPnpVdmhwFvBJzbdWNtJJjtNJNjbvJtttN
|
||||||
|
RvmgjDqqjqRgZRMRDpQjQhWsbPLPFnPFFbVVLbdSbnPSvP
|
||||||
|
NwczHBrJTzcBJHrfWJBCJcrCdnPPPNSlLnsnbFnnLlbSFddS
|
||||||
|
rGJwCCCJHwBGGctGDtphQQMppQWZmRpD
|
||||||
|
RPhhSMqRccBDZPPPRhPcNZSzzTLJrWZLmVVQLWZdTQQJWL
|
||||||
|
nwggfwCvbjwvbwpzWLpWVLdrrrQVTm
|
||||||
|
vgnGGCsCtntbFsgqlRVMSqNVBDtPSc
|
||||||
|
mtstjJmvTNBcjRRCHCfH
|
||||||
|
gLpglwwlgHbZbgpgFrdBBBfdfSPBLSSrcS
|
||||||
|
GQGglGWWgMglQFHgbmTmNtDqnDDVJMDMNJ
|
||||||
|
ZMbBZfvVfFfBbMvfMhgbfDsrSTTszcldmTTPmcPFDz
|
||||||
|
QqQQnwrqWQpwRWWpWwJRwNzTTSPpzPPdTPpSPmdSscmS
|
||||||
|
GjjtJRWtwGQjRZVChZMjVCrMMf
|
||||||
|
fJNPTvDPTpHHTPwvjNNHDfTWthhgQQGdBddtlvMsMQMvQh
|
||||||
|
rFbZVZrLmLdGrrhMBQWg
|
||||||
|
FmnzVRFLqVqqVLVRRFZSFmTwfHHjHCNCCDGwjnCDDfNH
|
||||||
|
gQHHQJgCnNJnQFQPRbDQzLRR
|
||||||
|
mwrdpctWtrMvvrrWwGMmGWWPLzFFLSbLnDFsLPdDFbZRLz
|
||||||
|
vGcmGwBBMGtmmrvlMrGlqNghlVjCCnTHHCHgCCjh
|
||||||
|
LmLvVjVjsrmrtmmr
|
||||||
|
tfcnbScRnlMZtHQPCgSQssPdHC
|
||||||
|
RGGGGnRfcwnGbbJRBRcwJfnGtBDhhVptNhDvLLhVvvjBWNvT
|
||||||
|
dZWNQZgQbbNvdWGgZvbTfLrjtrPlGJfrLqLJlj
|
||||||
|
TMmDpwzmVMHpBLfrcccMfqLjct
|
||||||
|
SwnSBTDDTwwzwnnsFSZdRNbQZWRvgSCvbQ
|
||||||
|
WPgZgQLLbMgdBrdnGqqfdhVVvR
|
||||||
|
HzssNTzwlwHHcczwFjMFHjVGrqRqnVThVqrGrGTRqvrf
|
||||||
|
zFzcHFNlzJBLgMQLJCZL
|
||||||
|
nPLNcWtNtlLMccLlWdTjzzbBfBQSzqzBqPqS
|
||||||
|
RbbDZZrGRJhJjgJQSjCfqQCC
|
||||||
|
rrmRbDDwvZDpprbGrbDvtctlVVVHvdtlcMtWHMHV
|
||||||
|
DWrZJrQjWwFcrhzVzbpmpcVqhb
|
||||||
|
MFnFHMNSqbMpMMmG
|
||||||
|
FNngNRBRCgnHCCHRPvLNdgJWwJDlJJDssZDLWWlWQlsl
|
||||||
|
BQqNsGrbBCNbNCrMpGpbHhthRCDRDRJCmDVRhRJP
|
||||||
|
nfvWvcnSWncSTdzzFLJtRmhHmPPVPVTwwHHtTh
|
||||||
|
WfLfnfSJZJvdLFZWngfBMGMppGMrNBbGMpZjrj
|
||||||
|
rccMjBMVJcjjjNNqmmCf
|
||||||
|
LLspTTGsTGntsntTFwnNNfFqQmmNgNqfNQmZvQ
|
||||||
|
tpDTwlGDTGPPsbtsLsnnqGTJzJrJBzHzMVrMRzBMlShVBR
|
||||||
|
PsrNPRjjPbjzjLRWLbjmvtCnMntnpfmtNZNCNv
|
||||||
|
dDlfwwJllhJTcllScSCQvmtCnmtCmQmQmG
|
||||||
|
TTFcdhJwhBFfwJJHhdchVclrsbWsbzqLgbzrrjgVRgsqgW
|
||||||
|
vvcvvDJFcDZPTzwfcwSLczzScz
|
||||||
|
VNnnVVsqGNntsqtBRblqBndSfzCCRzwRfCHSjdfSjzSH
|
||||||
|
pppsMVlGGhhrZwMMDP
|
||||||
|
LltNHMZNHMfNnfgtLHWWbhWjcblSbVbcTWVP
|
||||||
|
vFmCZsqRRBqrVPWsWTWPWb
|
||||||
|
mQBqJRdqQBqQzzRQztgLgntGZttddLMggw
|
||||||
|
ZTCCrCWfGLGBWSwHvHHmHvmTTH
|
||||||
|
bllhnsbjDlqFfqjhnFRppwmvJppmpRRwMNSmmw
|
||||||
|
FlnFDjdtqhDdfZZBrtBrrPLt
|
||||||
|
CRCTHHJcCmJgTSTRcSMcRMVstssSrtprppVFtdrdspNb
|
||||||
|
jjllnvgBLqdsGprtqtFG
|
||||||
|
vQjzWnWZWjBLhjgwcccRJgZPCmJm
|
||||||
|
VRNmBBRNRFcCRcFVRSVSqZLLvvlLqvLfzfMhjJLC
|
||||||
|
TdHsHbDsbHMJLqlLzl
|
||||||
|
bgQGsgWWGGgbDgwGzBNSFrFtVSmwRRNFtn
|
||||||
|
pCCggQPPzWnvlDcWVHGJcNBl
|
||||||
|
LhsLMrwwGlnMBlNG
|
||||||
|
mmhwZmqSLwjLttnFbvgFTpPtPtgFCz
|
||||||
|
TtZSJzFZhZzTFcgFFcmRRmJJQllCHvPshVQsCrshsCssHVHW
|
||||||
|
GjGGDGqdGfbpDBjMdjpBjBNbVHtsWWPHlMlrrrrWWlVlVsCs
|
||||||
|
dBdDdfqLdBjjFRFScRStmLnL
|
||||||
|
GtVppGGPbVgTVFQrZzfrJfJJtMJr
|
||||||
|
DslmNmLsnmNHNNnnqQRZSJSQfqrJzSJn
|
||||||
|
BNljDHsHlvhmBshDljWsDWlHdgvpVTFggVgGcTTpvFPTzGCV
|
||||||
|
GRcnTRtcQTcBTsNtpvhFCmmFhZvFPC
|
||||||
|
bBJMgqWfdwBJfMPPPmvPqhmjvvPC
|
||||||
|
SMJMdJbdfwJgVglMWWVdcQnBzSQDzGGQzRQDTQSB
|
||||||
|
mvjVzLgTzVzvVjJrJgrlMhZRFTtRlRhMRRRtFZ
|
||||||
|
HGqnNNqfnHNGGfCHndBqnqfFlcppsJMZplMFpMtlscRlpC
|
||||||
|
qSnPGqqbnSdVrvQrrSJjSV
|
||||||
|
lWFSWZZvVqnqfnSrJzMcPDjJBJcBMPFJ
|
||||||
|
NGppNgHdHbRsHPbsgGspTwHTMcmMDdJMMmzBDcMBMDQmjMBd
|
||||||
|
TGGLRGwHsGtpHgHpNbpttwrvCnvCrqSSLvWqPqSSnWvn
|
||||||
|
jwcqBNNdZLjSfvPdddRlfb
|
||||||
|
CDVmsgMHCnnDnhVghmDnDCzRRrSrbrlTbsSTlzzlvzPb
|
||||||
|
gCCFmCWDnChGCFHnGCLBcwwjvZQZNtGqqNZc
|
||||||
|
LBDcNstdNJscccVDhLHNDHVtFvdldlFvCSnSvjSSbblgvZjF
|
||||||
|
rWznQqGMMrmmRZbbwvSFgjwbwm
|
||||||
|
RQnTQfWqqTzTLJJLVtBTsc
|
||||||
|
SvwCTHqCqqqHtwtnnHHDtWgrBQLzzVLLzSQVFhbrSFLL
|
||||||
|
cZmPNmPJdmPjPdcclRPPdhBCFVVVrQzQCCLbcgVbBV
|
||||||
|
fNlmfZfpfWMCtGGpnM
|
||||||
|
bSNssNssbPHVccPhclPGpP
|
||||||
|
ffQfZdZZBDDZgLvhmhzVmVppmlpGgh
|
||||||
|
jdQQQJRljSFFTWCT
|
||||||
|
lvlLtvnhnfvMgtrvWjmTmPPzjHcrmdcjdd
|
||||||
|
qCbssCJbppQZQbRJDQSZCJRpzhmcQjdcTBmmGzmdcmjGmdmT
|
||||||
|
SqwSbJZSpwwFJFDDbqtNVMwVMMlVNgNVlLhV
|
||||||
|
DqGFQGNMGMQwCcgtCJcr
|
||||||
|
sVfjWlzzVsmzVZsdVlHrhjppcgpjrhpphcSJ
|
||||||
|
LRdLsZBWWmlZldZRmzPDvDTTDMGTPFPvBTTc
|
||||||
|
jzzzpjgBzTDQQHPH
|
||||||
|
gLLtZVdCdsLfnbZCbdZtHDfHTJJPPmJJfmHQDJqD
|
||||||
|
bVtWndLtcZgnhsvMSBrMFrvBWNrB
|
||||||
|
sfqhLDcqfqRRqQhQRqMcvlJpJwFgzwpjplwbgpwzLz
|
||||||
|
CrGttnhTWtmSnGrtTtSCZGFzbgHHFFFjljHjZHHFwgwl
|
||||||
|
mBnrrTmWWCGStVCmMcDPcPBqcsRhcvPR
|
||||||
|
GLZLBNrGZdGGVgMVJVhnvn
|
||||||
|
dmWlcqcQMWCJVhMn
|
||||||
|
cdpPqtQbcHlmQjmZswFfTRFpBTfwwT
|
||||||
|
ZhtZpvbnbpPbtLHLvdsNdcRLNd
|
||||||
|
jDDjlCflGwsHfdrfTLrrdN
|
||||||
|
MzmljBMBWPtsbtSQtW
|
||||||
|
GHrzPSrNLFnMtSBZjZBB
|
||||||
|
WWbfDmVmwmmlbVDldWslNnBMJJNZZJCtJJJn
|
||||||
|
vwDfffVvmDwdTvDRQvpLNpLpcRFpphhHLPHg
|
||||||
|
scsTslgcnCTCScSTcqLLWlFWLLqbGvRbpL
|
||||||
|
NZMBdBPtNbbrLGqqqGvqZF
|
||||||
|
NttdbhMPfjQfNtbMbMmNjhNcCzczSSCSJTSzTCScnfnzwC
|
||||||
|
pjdjCGGGWPCMSDfS
|
||||||
|
JhFMFcrgBHPnSnWFWDDn
|
||||||
|
HVBBJctBccghsJhgrbwLGTTdtjLdbmTMMb
|
||||||
|
DtGHgDPfGfPhfLwNWSSJQcpHcr
|
||||||
|
dvlMCzdnMRFCCTjnZNpNQJcSbrWzrpSQWS
|
||||||
|
TVvFJJMjJdlMvRvMClllZZgPtPGsftfDqtGfVGsGtqqq
|
||||||
|
jSmmcjmJqcBgwmWMCLLzCsMz
|
||||||
|
TnTQVDGQTpZGNQHDZDHHQDwsCCdLrflsrCVzVrwWzwrr
|
||||||
|
zDFpppnNQtnTQQvZZZNvnhqqjtRccRbgqqbSSSjPRg
|
||||||
|
FwClNSwCFstWZLDLvhvjvtjhhD
|
||||||
|
TmsHmsmrggzmqnnGGvPGjTbbRGBhbB
|
||||||
|
cHVqgcrVzrQqzHmMcrMnczzcWFVCCFNJZWJZswwFCZWwffwS
|
||||||
|
mzbsmbmLRCZTRbSJFvPLPJPJpJffcP
|
||||||
|
QqWqNVNNNllnnWTglqTVlGNPJDvwcJpwfwccPgccPJDfJF
|
||||||
|
HMGnNMltqGMjHGqMzmTSmzTsRSszSm
|
||||||
|
qlGDfljllCTgqCTvCDfBHHQsbrSZZHSHWtvWZB
|
||||||
|
NzpnNpRnLLwRpdwpVhtqQbSbsWQWbSWnrrnH
|
||||||
|
cFqwFNpLdVcDJlDgccTD
|
||||||
|
BRqjnSBNBpRHHpjpBSnHnRBQfQzzCvzWrsWCTvfsvCsCCsfC
|
||||||
|
ZMVbhqbMdlbLTdsWvfPdPC
|
||||||
|
hlZVDMZcwJNSgjJgJFnq
|
||||||
|
CZwZssQQZrmsCmNNDpDGFblclD
|
||||||
|
HMjWMbBVfnnbMbnzMpFhlNSNFFSDcDGSzN
|
||||||
|
LnLLqjnBMjMngHbnWrTgZsCsgZvvvQrvQs
|
||||||
|
RCFCCJQbCQcprRlHHPpHhd
|
||||||
|
tWWLwvswfvZshgqDpdpBgfdf
|
||||||
|
mZtvZtMpjZzwWFjJTcQQbjjnSQ
|
||||||
|
fBfVwtttLDFctDtwFPWfTppWfmHCHdJhdChT
|
||||||
|
bGMRsbsvMQSSzMzZSNzsZvRNWTZJlmgZTJJdhhmppHTJCgTg
|
||||||
|
jssjNSSGMsQHbsRvHNPjtDcDcLPPPPDwLDDV
|
||||||
|
pClhQjJccrpbpqHhMhVhSMqHPt
|
||||||
|
dBZGZdgBzRsBsvMwGGVPVqMGwtVH
|
||||||
|
ZvDddZvDBdDdDmgCmVmbbCNpCCbljW
|
||||||
|
DTMCpdCnwRDwdfMCDDCssfZmGrBrjpttjrNrgctmGpGr
|
||||||
|
VVqJQgSSWzhPGGrPtNNQtm
|
||||||
|
bFvhgWzHJlDdffswTvRd
|
||||||
|
jwCCPPTtCswCCNTsqRNbMqQMVvVzMMMQSGvQqn
|
||||||
|
hprHlmFcHcdhWWLchZzHrLMvvnBvJJSBJMVMnnmMnMMJ
|
||||||
|
WppLcZdHWHplZWlDHhHTfzRzCCsTTtNNgtjgDw
|
||||||
|
vhmDFcDZmczMrwcqrMrmDFrvggtVSWgtSNwsjBtNVSnBsjsS
|
||||||
|
dbbRJHbpCWBBpZVgSS
|
||||||
|
LZLdHlClPmqLGDvMDv
|
||||||
|
mFbWsvsJVtbbRwfTSP
|
||||||
|
BGpQllhLGqhplBGZBfLMTSTLwwfwMJwMPT
|
||||||
|
GlDnDpQZlZZpZBlpWDNcmrgrWmNdNJvc
|
||||||
|
zbtqTtHQbZZpqbPpvGJdvQdhrhQjdQGs
|
||||||
|
qDFLLSNqcWwsGhGDJh
|
||||||
|
LgBcfnFCSFnLccggSVCVtHZlpqPPtTRMftHMbMzb
|
||||||
|
hzrrWnzRZRnbWVRzjcRHMDdqqQdNMHqHQQjlHM
|
||||||
|
sGCpCtppBfCTgwBBCwPBCssQqMQvNlSMMQDQNqHGHvDSbQ
|
||||||
|
tpLFPgfbCsfbzzcnJhRhZLhc
|
||||||
|
qzzGqfpFvWFmRSPjPjRP
|
||||||
|
cwwVssBMtNMNLngstgVBnrsPmHSJJmjllhQdQldmhdrjQJ
|
||||||
|
nDVSsLwcVcMnBGzTDDCvpvfzGT
|
||||||
|
bcTbbcZGZLPgTMWZpLLDQnrvPVnVmmjmRPFVrF
|
||||||
|
HJCJqlzBdsSjzCJRmlrlrnVQQDFnVF
|
||||||
|
BfwffNdNswLtbWbNcpjt
|
||||||
|
smJwSNNFMzFNDrvbrbfJHvbl
|
||||||
|
BRQjqZQcBhrbTsbTnfcn
|
||||||
|
ZLQRZRBjjPWSsmCdSWMgSN
|
||||||
|
NhwlDpbWggdSBvBggLFg
|
||||||
|
fRrZsVfjqljmsQQVmmsnFMFSBLLRvFTFMBSvFF
|
||||||
|
QfqVVzcsQmcQqrcsNwzzzPphHlwNppPH
|
||||||
|
nnFdsjVdmpBsBVFHzjpvlTfQdPcQQPGPcvlGPv
|
||||||
|
DWMDCCWbNJhLtMgJMNLgtMgQflZQlfQGjZZhQZGhTfQcQP
|
||||||
|
rCrtJJgLLMbgDgMDWNRrWRnzsjpFzBzSHmmqHmqnHH
|
||||||
|
rmjjJmmdwSmGhdsjJtsgGNzFWQFnBFVWHdFQcLLcNz
|
||||||
|
RCCbfRlvvPfvCTnHLLnNbNLczHnQ
|
||||||
|
lqZTllRRpDMlpfZRvgQpSmwwtggQjJgtpS
|
||||||
|
LDsGvTSSsswCwTrLZDqQWHMWbphlHMpGGpQz
|
||||||
|
RRPfPRccBdVjPcFlpMpMQWzMWfpF
|
||||||
|
RjPRjRtczcNBJRSCtLDTvTSDCCST
|
||||||
|
pqQNgNnSntwgqzzQCzNwCNBRcWtBjZcZGrBMcHMGvWcr
|
||||||
|
mmJdJPFVbJbPPGZbMRbvvrjcMj
|
||||||
|
lTMVVlLPfLNQhpgqLSLn
|
||||||
|
HlBHFrgBvlfzFzqvnvFqpCJbJfQpQpLcmhbcmtmm
|
||||||
|
jDjPGsRRTMMPjdJmjmLpCLth
|
||||||
|
MRMZMWsNpFFFVFHW
|
||||||
|
RGgwWcppGSWcWSRWmGdWcttHQFJHfbQwBQJTJQBQfJ
|
||||||
|
njjZZCMlCZjqMBFbJQZHJHBQft
|
||||||
|
DsjCPDDvjFNsMNjNqpGspcsGSmcpccrGWS
|
||||||
|
cVwMZGVZwHNPgPwRZwHttThlHllvlzQpptzppl
|
||||||
|
DsCWdqLdDCnfJLSCqsqWRsBdlhjlhzlttzQhhtvlhnhhhbzT
|
||||||
|
JCWWRWCrLDDdBdLsSsLLSCrCNZMVcmMZMFwMZwNZPZVGFPmr
|
||||||
|
hhPzDzPhPNbfpzhBbdNbDhttzqWtwttHWwntjqmwmWFm
|
||||||
|
LgGZSdMMrgTLrZLdgLSgsGTFFjrWtFFmmmFtWjqHFnFtjn
|
||||||
|
vZgdLvZLZQLRQZQQdMZLdQvVpRhNNPfJDbcBbbhVNJNNhf
|
1000
input/04.txt
Normal file
1000
input/04.txt
Normal file
File diff suppressed because it is too large
Load Diff
511
input/05.txt
Normal file
511
input/05.txt
Normal file
@ -0,0 +1,511 @@
|
|||||||
|
[N] [R] [C]
|
||||||
|
[T] [J] [S] [J] [N]
|
||||||
|
[B] [Z] [H] [M] [Z] [D]
|
||||||
|
[S] [P] [G] [L] [H] [Z] [T]
|
||||||
|
[Q] [D] [F] [D] [V] [L] [S] [M]
|
||||||
|
[H] [F] [V] [J] [C] [W] [P] [W] [L]
|
||||||
|
[G] [S] [H] [Z] [Z] [T] [F] [V] [H]
|
||||||
|
[R] [H] [Z] [M] [T] [M] [T] [Q] [W]
|
||||||
|
1 2 3 4 5 6 7 8 9
|
||||||
|
|
||||||
|
move 3 from 9 to 7
|
||||||
|
move 4 from 4 to 5
|
||||||
|
move 2 from 4 to 6
|
||||||
|
move 4 from 7 to 5
|
||||||
|
move 3 from 7 to 3
|
||||||
|
move 2 from 5 to 9
|
||||||
|
move 5 from 6 to 3
|
||||||
|
move 5 from 9 to 1
|
||||||
|
move 3 from 8 to 4
|
||||||
|
move 3 from 4 to 6
|
||||||
|
move 8 from 1 to 8
|
||||||
|
move 1 from 8 to 6
|
||||||
|
move 2 from 8 to 2
|
||||||
|
move 5 from 8 to 4
|
||||||
|
move 1 from 8 to 1
|
||||||
|
move 6 from 6 to 4
|
||||||
|
move 1 from 7 to 9
|
||||||
|
move 5 from 1 to 7
|
||||||
|
move 1 from 1 to 2
|
||||||
|
move 2 from 9 to 8
|
||||||
|
move 6 from 4 to 9
|
||||||
|
move 1 from 6 to 8
|
||||||
|
move 3 from 2 to 7
|
||||||
|
move 4 from 2 to 8
|
||||||
|
move 4 from 9 to 3
|
||||||
|
move 6 from 5 to 4
|
||||||
|
move 7 from 8 to 1
|
||||||
|
move 10 from 4 to 1
|
||||||
|
move 12 from 1 to 5
|
||||||
|
move 1 from 4 to 9
|
||||||
|
move 1 from 2 to 3
|
||||||
|
move 2 from 9 to 1
|
||||||
|
move 1 from 9 to 3
|
||||||
|
move 1 from 6 to 7
|
||||||
|
move 1 from 9 to 1
|
||||||
|
move 3 from 1 to 3
|
||||||
|
move 9 from 5 to 9
|
||||||
|
move 2 from 2 to 7
|
||||||
|
move 2 from 7 to 4
|
||||||
|
move 3 from 9 to 4
|
||||||
|
move 7 from 5 to 7
|
||||||
|
move 5 from 1 to 3
|
||||||
|
move 2 from 4 to 5
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 1 from 6 to 9
|
||||||
|
move 4 from 9 to 2
|
||||||
|
move 12 from 7 to 9
|
||||||
|
move 2 from 4 to 9
|
||||||
|
move 6 from 5 to 9
|
||||||
|
move 3 from 7 to 6
|
||||||
|
move 12 from 9 to 6
|
||||||
|
move 5 from 9 to 1
|
||||||
|
move 1 from 7 to 6
|
||||||
|
move 14 from 6 to 1
|
||||||
|
move 20 from 3 to 5
|
||||||
|
move 5 from 9 to 5
|
||||||
|
move 3 from 2 to 8
|
||||||
|
move 1 from 6 to 4
|
||||||
|
move 1 from 9 to 2
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 1 from 2 to 6
|
||||||
|
move 16 from 1 to 5
|
||||||
|
move 1 from 2 to 1
|
||||||
|
move 12 from 5 to 6
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 29 from 5 to 1
|
||||||
|
move 5 from 6 to 9
|
||||||
|
move 20 from 1 to 3
|
||||||
|
move 4 from 1 to 3
|
||||||
|
move 11 from 3 to 8
|
||||||
|
move 1 from 4 to 3
|
||||||
|
move 4 from 9 to 8
|
||||||
|
move 7 from 1 to 8
|
||||||
|
move 2 from 3 to 2
|
||||||
|
move 2 from 6 to 7
|
||||||
|
move 1 from 9 to 8
|
||||||
|
move 10 from 3 to 5
|
||||||
|
move 1 from 6 to 1
|
||||||
|
move 1 from 7 to 2
|
||||||
|
move 3 from 1 to 2
|
||||||
|
move 6 from 2 to 4
|
||||||
|
move 2 from 6 to 3
|
||||||
|
move 4 from 6 to 5
|
||||||
|
move 1 from 6 to 2
|
||||||
|
move 1 from 2 to 9
|
||||||
|
move 6 from 5 to 2
|
||||||
|
move 1 from 9 to 3
|
||||||
|
move 24 from 8 to 7
|
||||||
|
move 1 from 4 to 8
|
||||||
|
move 5 from 5 to 4
|
||||||
|
move 1 from 4 to 8
|
||||||
|
move 1 from 8 to 7
|
||||||
|
move 2 from 8 to 9
|
||||||
|
move 1 from 9 to 7
|
||||||
|
move 6 from 2 to 4
|
||||||
|
move 10 from 3 to 7
|
||||||
|
move 3 from 5 to 3
|
||||||
|
move 1 from 9 to 8
|
||||||
|
move 3 from 3 to 8
|
||||||
|
move 4 from 8 to 7
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 1 from 6 to 4
|
||||||
|
move 13 from 4 to 3
|
||||||
|
move 17 from 7 to 6
|
||||||
|
move 1 from 6 to 3
|
||||||
|
move 2 from 4 to 8
|
||||||
|
move 3 from 7 to 5
|
||||||
|
move 14 from 6 to 7
|
||||||
|
move 1 from 5 to 9
|
||||||
|
move 1 from 5 to 9
|
||||||
|
move 2 from 6 to 7
|
||||||
|
move 1 from 5 to 1
|
||||||
|
move 1 from 1 to 6
|
||||||
|
move 1 from 9 to 3
|
||||||
|
move 29 from 7 to 4
|
||||||
|
move 10 from 4 to 3
|
||||||
|
move 6 from 7 to 5
|
||||||
|
move 1 from 6 to 5
|
||||||
|
move 1 from 9 to 7
|
||||||
|
move 1 from 7 to 2
|
||||||
|
move 4 from 3 to 2
|
||||||
|
move 1 from 2 to 9
|
||||||
|
move 1 from 8 to 5
|
||||||
|
move 11 from 3 to 4
|
||||||
|
move 24 from 4 to 7
|
||||||
|
move 2 from 2 to 5
|
||||||
|
move 10 from 3 to 2
|
||||||
|
move 6 from 2 to 1
|
||||||
|
move 5 from 4 to 7
|
||||||
|
move 1 from 9 to 2
|
||||||
|
move 3 from 5 to 1
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 4 from 2 to 3
|
||||||
|
move 5 from 5 to 7
|
||||||
|
move 2 from 5 to 3
|
||||||
|
move 32 from 7 to 5
|
||||||
|
move 16 from 5 to 1
|
||||||
|
move 1 from 1 to 2
|
||||||
|
move 3 from 2 to 9
|
||||||
|
move 1 from 8 to 6
|
||||||
|
move 3 from 7 to 6
|
||||||
|
move 1 from 2 to 4
|
||||||
|
move 5 from 6 to 8
|
||||||
|
move 5 from 8 to 6
|
||||||
|
move 2 from 9 to 3
|
||||||
|
move 1 from 7 to 5
|
||||||
|
move 9 from 5 to 4
|
||||||
|
move 1 from 9 to 1
|
||||||
|
move 2 from 3 to 1
|
||||||
|
move 4 from 3 to 6
|
||||||
|
move 1 from 3 to 8
|
||||||
|
move 6 from 4 to 6
|
||||||
|
move 6 from 5 to 9
|
||||||
|
move 1 from 9 to 6
|
||||||
|
move 1 from 5 to 1
|
||||||
|
move 1 from 5 to 4
|
||||||
|
move 1 from 3 to 6
|
||||||
|
move 1 from 8 to 3
|
||||||
|
move 1 from 4 to 2
|
||||||
|
move 1 from 2 to 3
|
||||||
|
move 17 from 6 to 4
|
||||||
|
move 4 from 1 to 8
|
||||||
|
move 3 from 9 to 6
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 1 from 9 to 7
|
||||||
|
move 2 from 6 to 2
|
||||||
|
move 1 from 7 to 8
|
||||||
|
move 12 from 1 to 9
|
||||||
|
move 8 from 9 to 2
|
||||||
|
move 1 from 6 to 9
|
||||||
|
move 6 from 2 to 8
|
||||||
|
move 2 from 8 to 3
|
||||||
|
move 18 from 4 to 9
|
||||||
|
move 2 from 1 to 6
|
||||||
|
move 1 from 6 to 5
|
||||||
|
move 3 from 4 to 3
|
||||||
|
move 7 from 3 to 8
|
||||||
|
move 4 from 2 to 7
|
||||||
|
move 1 from 4 to 6
|
||||||
|
move 2 from 6 to 4
|
||||||
|
move 13 from 9 to 6
|
||||||
|
move 1 from 5 to 2
|
||||||
|
move 5 from 9 to 3
|
||||||
|
move 9 from 1 to 2
|
||||||
|
move 1 from 1 to 8
|
||||||
|
move 1 from 2 to 6
|
||||||
|
move 3 from 7 to 6
|
||||||
|
move 2 from 2 to 6
|
||||||
|
move 9 from 8 to 6
|
||||||
|
move 1 from 7 to 8
|
||||||
|
move 1 from 8 to 7
|
||||||
|
move 2 from 4 to 6
|
||||||
|
move 5 from 3 to 6
|
||||||
|
move 17 from 6 to 9
|
||||||
|
move 7 from 8 to 4
|
||||||
|
move 4 from 2 to 3
|
||||||
|
move 17 from 6 to 2
|
||||||
|
move 1 from 6 to 4
|
||||||
|
move 1 from 7 to 8
|
||||||
|
move 1 from 8 to 9
|
||||||
|
move 24 from 9 to 6
|
||||||
|
move 4 from 3 to 1
|
||||||
|
move 1 from 1 to 5
|
||||||
|
move 20 from 6 to 4
|
||||||
|
move 4 from 6 to 9
|
||||||
|
move 1 from 5 to 7
|
||||||
|
move 2 from 4 to 2
|
||||||
|
move 1 from 9 to 7
|
||||||
|
move 25 from 4 to 3
|
||||||
|
move 1 from 4 to 2
|
||||||
|
move 2 from 1 to 6
|
||||||
|
move 3 from 9 to 4
|
||||||
|
move 2 from 4 to 7
|
||||||
|
move 2 from 7 to 5
|
||||||
|
move 1 from 4 to 2
|
||||||
|
move 1 from 6 to 3
|
||||||
|
move 1 from 1 to 5
|
||||||
|
move 5 from 3 to 9
|
||||||
|
move 1 from 5 to 6
|
||||||
|
move 10 from 2 to 8
|
||||||
|
move 9 from 2 to 5
|
||||||
|
move 21 from 3 to 6
|
||||||
|
move 1 from 7 to 6
|
||||||
|
move 2 from 6 to 5
|
||||||
|
move 5 from 9 to 7
|
||||||
|
move 6 from 7 to 8
|
||||||
|
move 19 from 6 to 9
|
||||||
|
move 1 from 6 to 1
|
||||||
|
move 8 from 8 to 1
|
||||||
|
move 1 from 6 to 1
|
||||||
|
move 2 from 8 to 5
|
||||||
|
move 5 from 9 to 2
|
||||||
|
move 6 from 8 to 2
|
||||||
|
move 2 from 9 to 7
|
||||||
|
move 9 from 9 to 4
|
||||||
|
move 7 from 2 to 4
|
||||||
|
move 1 from 6 to 4
|
||||||
|
move 14 from 5 to 9
|
||||||
|
move 1 from 1 to 8
|
||||||
|
move 1 from 7 to 9
|
||||||
|
move 4 from 2 to 9
|
||||||
|
move 16 from 4 to 6
|
||||||
|
move 3 from 2 to 8
|
||||||
|
move 1 from 6 to 2
|
||||||
|
move 2 from 8 to 9
|
||||||
|
move 1 from 8 to 7
|
||||||
|
move 1 from 8 to 3
|
||||||
|
move 3 from 2 to 7
|
||||||
|
move 1 from 3 to 9
|
||||||
|
move 8 from 9 to 3
|
||||||
|
move 4 from 7 to 8
|
||||||
|
move 1 from 5 to 4
|
||||||
|
move 4 from 6 to 3
|
||||||
|
move 1 from 4 to 2
|
||||||
|
move 9 from 3 to 8
|
||||||
|
move 10 from 9 to 5
|
||||||
|
move 8 from 6 to 7
|
||||||
|
move 13 from 8 to 4
|
||||||
|
move 8 from 5 to 2
|
||||||
|
move 3 from 6 to 3
|
||||||
|
move 7 from 9 to 6
|
||||||
|
move 7 from 7 to 2
|
||||||
|
move 2 from 4 to 6
|
||||||
|
move 5 from 6 to 2
|
||||||
|
move 3 from 1 to 5
|
||||||
|
move 5 from 5 to 8
|
||||||
|
move 4 from 6 to 2
|
||||||
|
move 4 from 1 to 8
|
||||||
|
move 15 from 2 to 6
|
||||||
|
move 11 from 4 to 9
|
||||||
|
move 12 from 6 to 8
|
||||||
|
move 1 from 6 to 9
|
||||||
|
move 5 from 3 to 7
|
||||||
|
move 2 from 2 to 6
|
||||||
|
move 6 from 7 to 1
|
||||||
|
move 3 from 1 to 3
|
||||||
|
move 1 from 4 to 1
|
||||||
|
move 1 from 3 to 9
|
||||||
|
move 1 from 3 to 9
|
||||||
|
move 1 from 7 to 6
|
||||||
|
move 1 from 3 to 2
|
||||||
|
move 4 from 2 to 6
|
||||||
|
move 4 from 2 to 7
|
||||||
|
move 1 from 2 to 6
|
||||||
|
move 4 from 1 to 6
|
||||||
|
move 12 from 6 to 7
|
||||||
|
move 2 from 6 to 1
|
||||||
|
move 8 from 9 to 6
|
||||||
|
move 1 from 7 to 4
|
||||||
|
move 14 from 8 to 1
|
||||||
|
move 8 from 1 to 5
|
||||||
|
move 1 from 3 to 9
|
||||||
|
move 5 from 9 to 5
|
||||||
|
move 1 from 8 to 9
|
||||||
|
move 1 from 9 to 2
|
||||||
|
move 1 from 9 to 3
|
||||||
|
move 5 from 8 to 3
|
||||||
|
move 12 from 5 to 4
|
||||||
|
move 1 from 9 to 2
|
||||||
|
move 6 from 7 to 3
|
||||||
|
move 7 from 3 to 2
|
||||||
|
move 1 from 5 to 1
|
||||||
|
move 1 from 8 to 3
|
||||||
|
move 2 from 1 to 3
|
||||||
|
move 2 from 6 to 9
|
||||||
|
move 5 from 6 to 5
|
||||||
|
move 5 from 1 to 7
|
||||||
|
move 4 from 4 to 1
|
||||||
|
move 7 from 2 to 8
|
||||||
|
move 4 from 3 to 8
|
||||||
|
move 1 from 9 to 3
|
||||||
|
move 1 from 9 to 5
|
||||||
|
move 4 from 1 to 8
|
||||||
|
move 10 from 7 to 9
|
||||||
|
move 1 from 6 to 7
|
||||||
|
move 2 from 8 to 6
|
||||||
|
move 6 from 4 to 2
|
||||||
|
move 5 from 3 to 1
|
||||||
|
move 2 from 6 to 3
|
||||||
|
move 2 from 7 to 1
|
||||||
|
move 5 from 2 to 5
|
||||||
|
move 2 from 7 to 1
|
||||||
|
move 7 from 5 to 7
|
||||||
|
move 2 from 5 to 6
|
||||||
|
move 2 from 5 to 3
|
||||||
|
move 3 from 2 to 9
|
||||||
|
move 9 from 9 to 3
|
||||||
|
move 1 from 6 to 4
|
||||||
|
move 3 from 3 to 1
|
||||||
|
move 9 from 8 to 2
|
||||||
|
move 6 from 3 to 6
|
||||||
|
move 8 from 7 to 9
|
||||||
|
move 4 from 9 to 8
|
||||||
|
move 14 from 1 to 5
|
||||||
|
move 1 from 9 to 2
|
||||||
|
move 1 from 1 to 5
|
||||||
|
move 2 from 3 to 6
|
||||||
|
move 12 from 5 to 3
|
||||||
|
move 2 from 2 to 8
|
||||||
|
move 7 from 6 to 2
|
||||||
|
move 12 from 2 to 8
|
||||||
|
move 2 from 6 to 2
|
||||||
|
move 6 from 9 to 6
|
||||||
|
move 1 from 1 to 2
|
||||||
|
move 1 from 9 to 3
|
||||||
|
move 2 from 5 to 9
|
||||||
|
move 1 from 9 to 2
|
||||||
|
move 1 from 9 to 4
|
||||||
|
move 1 from 3 to 2
|
||||||
|
move 2 from 6 to 7
|
||||||
|
move 2 from 6 to 9
|
||||||
|
move 5 from 4 to 2
|
||||||
|
move 14 from 3 to 9
|
||||||
|
move 15 from 9 to 4
|
||||||
|
move 1 from 7 to 4
|
||||||
|
move 10 from 8 to 6
|
||||||
|
move 1 from 5 to 9
|
||||||
|
move 2 from 9 to 5
|
||||||
|
move 10 from 8 to 1
|
||||||
|
move 1 from 7 to 4
|
||||||
|
move 5 from 1 to 2
|
||||||
|
move 2 from 1 to 5
|
||||||
|
move 3 from 4 to 6
|
||||||
|
move 4 from 5 to 8
|
||||||
|
move 5 from 8 to 6
|
||||||
|
move 14 from 2 to 9
|
||||||
|
move 2 from 6 to 7
|
||||||
|
move 3 from 2 to 9
|
||||||
|
move 3 from 1 to 7
|
||||||
|
move 1 from 7 to 3
|
||||||
|
move 3 from 7 to 1
|
||||||
|
move 1 from 3 to 6
|
||||||
|
move 1 from 7 to 6
|
||||||
|
move 1 from 8 to 9
|
||||||
|
move 2 from 1 to 4
|
||||||
|
move 1 from 1 to 2
|
||||||
|
move 16 from 9 to 4
|
||||||
|
move 7 from 4 to 8
|
||||||
|
move 5 from 8 to 1
|
||||||
|
move 2 from 8 to 3
|
||||||
|
move 2 from 1 to 7
|
||||||
|
move 13 from 6 to 7
|
||||||
|
move 2 from 2 to 3
|
||||||
|
move 4 from 7 to 4
|
||||||
|
move 6 from 4 to 5
|
||||||
|
move 4 from 7 to 6
|
||||||
|
move 3 from 1 to 2
|
||||||
|
move 2 from 2 to 6
|
||||||
|
move 3 from 3 to 8
|
||||||
|
move 5 from 5 to 3
|
||||||
|
move 2 from 9 to 6
|
||||||
|
move 3 from 3 to 7
|
||||||
|
move 1 from 8 to 1
|
||||||
|
move 22 from 4 to 8
|
||||||
|
move 1 from 4 to 3
|
||||||
|
move 9 from 6 to 3
|
||||||
|
move 1 from 2 to 1
|
||||||
|
move 4 from 3 to 4
|
||||||
|
move 2 from 4 to 5
|
||||||
|
move 1 from 1 to 7
|
||||||
|
move 4 from 3 to 7
|
||||||
|
move 2 from 6 to 1
|
||||||
|
move 1 from 6 to 7
|
||||||
|
move 18 from 8 to 7
|
||||||
|
move 2 from 6 to 5
|
||||||
|
move 2 from 3 to 4
|
||||||
|
move 1 from 5 to 4
|
||||||
|
move 30 from 7 to 6
|
||||||
|
move 2 from 1 to 3
|
||||||
|
move 18 from 6 to 8
|
||||||
|
move 12 from 6 to 4
|
||||||
|
move 13 from 4 to 9
|
||||||
|
move 2 from 3 to 8
|
||||||
|
move 1 from 6 to 2
|
||||||
|
move 3 from 7 to 2
|
||||||
|
move 1 from 1 to 2
|
||||||
|
move 2 from 5 to 9
|
||||||
|
move 8 from 8 to 1
|
||||||
|
move 1 from 7 to 8
|
||||||
|
move 7 from 1 to 3
|
||||||
|
move 2 from 4 to 9
|
||||||
|
move 1 from 1 to 6
|
||||||
|
move 4 from 2 to 1
|
||||||
|
move 16 from 8 to 1
|
||||||
|
move 1 from 2 to 6
|
||||||
|
move 2 from 4 to 8
|
||||||
|
move 2 from 5 to 1
|
||||||
|
move 4 from 3 to 7
|
||||||
|
move 3 from 7 to 1
|
||||||
|
move 1 from 6 to 8
|
||||||
|
move 1 from 8 to 9
|
||||||
|
move 1 from 7 to 3
|
||||||
|
move 6 from 3 to 5
|
||||||
|
move 1 from 3 to 8
|
||||||
|
move 1 from 6 to 9
|
||||||
|
move 16 from 9 to 5
|
||||||
|
move 4 from 5 to 3
|
||||||
|
move 15 from 5 to 1
|
||||||
|
move 1 from 5 to 8
|
||||||
|
move 3 from 9 to 8
|
||||||
|
move 9 from 8 to 5
|
||||||
|
move 6 from 5 to 1
|
||||||
|
move 4 from 5 to 6
|
||||||
|
move 2 from 6 to 4
|
||||||
|
move 1 from 6 to 4
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 3 from 3 to 6
|
||||||
|
move 3 from 6 to 8
|
||||||
|
move 1 from 6 to 8
|
||||||
|
move 21 from 1 to 9
|
||||||
|
move 4 from 8 to 5
|
||||||
|
move 3 from 5 to 7
|
||||||
|
move 2 from 5 to 1
|
||||||
|
move 2 from 4 to 8
|
||||||
|
move 2 from 8 to 2
|
||||||
|
move 2 from 7 to 8
|
||||||
|
move 1 from 7 to 9
|
||||||
|
move 1 from 8 to 7
|
||||||
|
move 5 from 1 to 8
|
||||||
|
move 1 from 7 to 8
|
||||||
|
move 4 from 8 to 4
|
||||||
|
move 2 from 4 to 5
|
||||||
|
move 1 from 2 to 7
|
||||||
|
move 1 from 2 to 7
|
||||||
|
move 2 from 7 to 6
|
||||||
|
move 2 from 6 to 9
|
||||||
|
move 1 from 4 to 9
|
||||||
|
move 1 from 3 to 4
|
||||||
|
move 16 from 1 to 5
|
||||||
|
move 16 from 5 to 7
|
||||||
|
move 2 from 5 to 4
|
||||||
|
move 14 from 9 to 6
|
||||||
|
move 5 from 4 to 3
|
||||||
|
move 3 from 3 to 6
|
||||||
|
move 5 from 1 to 4
|
||||||
|
move 2 from 4 to 7
|
||||||
|
move 7 from 9 to 4
|
||||||
|
move 2 from 9 to 7
|
||||||
|
move 10 from 6 to 9
|
||||||
|
move 8 from 4 to 6
|
||||||
|
move 1 from 8 to 4
|
||||||
|
move 1 from 1 to 9
|
||||||
|
move 14 from 6 to 3
|
||||||
|
move 10 from 3 to 2
|
||||||
|
move 3 from 7 to 8
|
||||||
|
move 6 from 3 to 1
|
||||||
|
move 2 from 7 to 9
|
||||||
|
move 5 from 7 to 9
|
||||||
|
move 10 from 9 to 1
|
||||||
|
move 2 from 4 to 3
|
||||||
|
move 1 from 2 to 1
|
||||||
|
move 16 from 1 to 4
|
||||||
|
move 1 from 6 to 1
|
||||||
|
move 2 from 3 to 9
|
||||||
|
move 3 from 8 to 5
|
||||||
|
move 8 from 7 to 1
|
||||||
|
move 3 from 5 to 9
|
||||||
|
move 7 from 4 to 6
|
||||||
|
move 7 from 1 to 5
|
||||||
|
move 2 from 8 to 3
|
||||||
|
move 1 from 7 to 8
|
1
input/06.txt
Normal file
1
input/06.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
pnnfhnhshrhmhwwmwzmznmnwmwfmfhfjfcjjtgtbggpdgdjjbjrjsjpjrrmddmgmpmddrhddnfnfzfpfvpfpprhhlffmtffqhhdtdcdsswsdwswmmfvvpdprrnnhhhtffnfbbznbznnvdnnbffjrfrbfrbrgbrrntnggrqqwtqwwgjgsswgwqwtwwsvwvbwvwrwlrlppzfzwfzzpmzzhqqzqlzlglzzmrmwrmwwvmwvvnppjfjttlffhjjjsccbggnffqgfgjjnccmdmzmllvnlnznttlvlttvnvgnvvqvmvqqzrqqcgglzzwtztwwmjmzjjnddsffqrqlrrvsvdvldvvlgvlvccdzczcqcpphggtnthhhtbhtttcjtjcjgcjcbbrhbbfrffgjgdgzddcttczzsccbpcpddcpcggmjgjddtcccthccfrccmdmhmddnwddfldffntnptnpttcptcptpfphhmfmwfwmmlblgbgvbvlltqltldttfcfcclgcllmplmlbbjnjzjnzzttnvvgddshddsqddggsqgqddsggdhghjgjhhgchhdmdjmjddgdhghrrphrrpnnqhhjwwqrrcmmslmmszzpgzpzzrmzmznzllnjnnlnbbdvdsdffbpffcmmnznqqcbbzvvjnjvvwqwgqqpnnzwnzwnzwwwlpwpzzfqzfqqwnqnbnfnqnbqqbggqnqdndrrzzlffbbgqgfgrfrqqsddnqnqjjgssqwqwcqcpcrrqppwpjjfnfpffhphwwmcwwznwznnplptlplnlsnlsldslslsffwtwftwtbtdbbjsjcczwwfllwtlwtlwlvwlwrwppsggvcvrrqcrqqvmqvmmbrrsbsfspspjpnnmpmqmcczgzffqmfmtmpppwzppzrpzrzsrrpqrpqpmpvmpvpttbqtqmtmjttqdqgggcppclcjcpcsppctpplpdpcppcmmdzmzddvhvhnhrrldllcwwbnwnssshlhrhthggtmggbjbjwwbvbttjllvrrfggngvngnmmvzzrrmddmcddztztctfccqpcpcqqvqppqcqdcdhhvhssgfgzgwwzmmnssvwwbqbhbnhnphpqqjcqcddfwfttqjtqtlttglljgjbgjgnnsqqvrvffqvqfqbffljjpffssqdsqstqqqldqqmhmsmsqqwtqwqdqgdgjjfbjffgbbrhhqghgppqgpgmpmmfzfhhfrhffgmfggpzgpzzhtzhhlbhhqbbzvvnvqnntptmmbhbdhdwwmjjcnnmsscqcbbtjtvjvwjvvmsmjmtmpmgghttcztzggpddbfbfgbbdsdrsrrqfqjjqfjjhzhtzzmdzzcgzgdzzmvmmfmjmgjmggmppbdppmzpppvfppzhhfsfwfhhpjpmmrjjpssdccjpjpwjppvdpphcpcjcfjfwjfwfjwfjjqcqcwqqqsmmmbbgdgwwpcwwdfdlflrltlgtthfhfjhhlthtddlgdggsjsrrdpdcppgttphpgpwppmpzmmrjmmvjvgvgfglfgllbqlqhllszzlwwhzzdfdcdtctptwtztfzzmjzjtjtrjrcrnrjjmwmnnbddgvgtgsstjsszmpqdmzgqflrbrspjmtzjcrmlzltmhgblghnwqvwwqwzbpnfrpdpblpjgshfccfbjfsnwvvhnjftsdnsgtzzjtzpmtfdvzrhtqpblhwgmqtgpbfvbdmsnrrrvvbstpsznvbbwgjfqjrhdvwvgptpglpfddhddmtglmjlpwlvfpbtbmgbplbzrlpdlvqzcwhbscpszgfstjpfdvfpmljlngrbgrdnnblzqrfpzsdvblpwbtnhdjclldvwvbwcwzfzbdspgwpfqjfbdbrqcshtlvcrdstnzggbwqnzbrfzbpnrtmvpbvdhcvdsdshgtvhfgdzljflppqbwclnvbhbczvrscjhlbgbfvwdjhnjsgmvwhpfgwbbmnndpnglfrmtfdzvqgfjdqfhgrhvpbqndmqnqccgwswwdsqjnbjtjbjdbqgjnmfbdvlnfwbnrdqgvgzzhmmbbdzfdvvpwhpbwbnzdcdpchrwlhfsjnhhjggvplmqggwjdsvjtpnpnqgldjjdcscrdltssjdrpcrfbgbcjfplhzgwbprfcslhpcngtszrghmwhzdqscbfrhzdwcffzvmjrmcjcstfvhplvrsglgsjnjtrpddsdfqjsndjnfmvdhfgdbzzflqhsrrwmrnlpqzmcddqbqvvzgtlztpgjnddtcnbmqsjlhmcszrmcjvwzpptlfqsmpvgnzvrjdwzpdwqgbmdgdtvjlmfczthjbcgfhbqpnmlbmrwwhfptzlbmfdhssznjcvjbmnjtnvzjhzczlrrdnttmmcbnzhqpplzqwgttwrnwfvmnptgqlfrnzvqpjfgrzwmlcwvtptvcvrlsrdwdgqfvffspmdbnnrqjttpqvhvdpbcrvzptwnhhfsqzchmncvttcdgdnlppcfzpmjpvbvqhlvplwvrmmbbggbwttwmvsqjlllsftprsmtmnzjcqfzblrllzgshfljchrjwjlpvhpbrtrsschzltrblgjnbgdnmwdggjhqggntblnhsvfgsbcblhmctbqzqwmhqnjhpzjfqpjdgwpzhczcftfcpdhvzhzccmwmrfrbqshzmtpqgpbbvfqqbjbmvnlnlwjtzrpmhdlffccrqcfgsjfszbrzrfztntchtmgmbhjgmlsqzcbtqqjzzlghtzzqmlnnvsgsvbbjfgqsqbqmqrdzwpwdgbggpdvhvnlzshhntprjdwhnwfvdjzpqgflwrvwgtmfdmfdztcbtfnjdrvgdwwczdgphnvdgrbdchprqldfjrvcsflcmlcmzqvqgsgnzcgmrhccgcmptcdzhbcdgdtppwztfstzqqzqrdzlnzthggjmpcflmbcmdrrjnnpbpqfmjbzqbtsjjgdlmgncbmgspqqvbrvzrdjscpzjsdtcdvsdwqlmwrngttswnrsbqctvhgfnnwblpcqzdmzpfchplslspmghvgcqntmlrfhgpcbpspvfhnvqvglsqzsnsdzddqpbsjhlclslngbwvvgjhwfcncqsmqwbptzvpzlzslsjjjldjpwpfrdlfbjphqcjtsgqdsdfdjhqgdhcppndwmhmmldvvmblcqcqfqhltbcbvrnghjfmtgqwtwljtczvqlnmgscjhqdhnzwhzvzzqnlsrhqvljqpgpwghfqlhjjrrhvnmnnrbnlhdcjctwtlhmhhmhjvcgzdrzmdjrvqzgnsttjdwglgwlcmbcdnjprgfsbbdzzngbqdrvwwwhbtlnnmzqdjttsrrpvlfdqnfhhtdtvmpcjgdwtbnqmwmtszdqfmbhjsjpqqddzfggwjhbtlnqfgcwbjzdtcpcpzgnrmnvwlpgmwfjlpgppdfrfvvjwsfcdqdnpcpjbqsvhttssgptqjghctrbgntlfjzdrfjccsprsjlrrwrzsmnjsqslmpdtrvhlqbnmgpjthpqdqmnvrtzlhhzzfzbrcclpmpcszhbttgrtcpgcpjwpdbfpfvgspsgtvglwthqcmcvmrfmclwlvjlsptfgmtlrnsvjrnfwzhdcsmgztpzfcvzwdztpppvqpvqfpdrsfnlhrbqwrsqjtwjmhnpwmqmpdgdhbtbpfwnmswffdqffdggrdrpmngvpzplmmwlddnhcvjjzqqfsbbtfmzdwnpvbjrshmllczhgvwwcbcbtfrfnplqjwmjlvpwwgfrtffwddwppsgtnlmpvfnhfzcsgjbqbjmbvpnqppsrvwnlzvcmjqgtbzrdsnrgwbfmrvnflgccrssfvcwgllqqbbcthzmbtnsmbzbcczhtzcvmthttpltrtdmgspctvtpvqbhmnnpnjwmhpqclmjsdrbjwvjbtzcjlqbjsvbgdwqzflnwzcfjwtrhjgfshfmwbjfwpnhjsmtpgbpwlfjjnmdlrhchmnfmgmgcrftmwbzshdwbhndgwtjbrrvbwprqppfmgfmfllpcjgrwdmtzddthsjlgjljv
|
1004
input/07.txt
Normal file
1004
input/07.txt
Normal file
File diff suppressed because it is too large
Load Diff
99
input/08.txt
Normal file
99
input/08.txt
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
000110211310120301121312200301013204213433321324454125534120411314221421432204213123312010120220212
|
||||||
|
020012220322312203320423330100141123432232555552131513413333243201041414120414404222300212031212210
|
||||||
|
012220223030033030244430211234220045555352514254335343332514243345202201013120303123003031322301122
|
||||||
|
122212123203002004034001203313232515112543525251445353434224414533524014020242242322320223010131111
|
||||||
|
221102333103333221411324203034235135343455415425134251221521352512445343444242410343133031022213111
|
||||||
|
012230110220232130043321130142424543415542352534155145434324432553532253510101043422110311302133322
|
||||||
|
121211332110331222432012225134422432341112144421535153351545122134242232152130110334114400332212301
|
||||||
|
021003020222222304114022552315552411255554221162455263643351112333322235214353424140101110301013303
|
||||||
|
211101331332303134320025235254523341134225246335554356533426415514344521433235223100024100322012213
|
||||||
|
333121033001133202211331144545334545442426462335662255342342626524313432432255113203322322002312200
|
||||||
|
010322322141333044304115552115413253563353625666244464226452656243424545525555553333333441121311231
|
||||||
|
032330304041422420432124324244236264255242536445626642464646454324353143112245143242140134012131113
|
||||||
|
113222323414023431235314252222246225364232452564335525523344525664226653522112244131121334130320322
|
||||||
|
121002342323322351314412423235433523643565644552335525522462425253643354453342113152132444223043001
|
||||||
|
303334322134140123154241513636446642663346536533667552624355222224332425555525121255313000110224301
|
||||||
|
220002230431013514545542433426226364623335746773567356566543235364324426533313525143244100121033121
|
||||||
|
000021230222223532342154546526322562455734556753354636566447345465225625536633243334425112234211423
|
||||||
|
100240131421551532143146364665353436655665676767645757767765365733656436442643144352144332403323231
|
||||||
|
231322213332442222125662224633422364634335777574764763343776757435645252662432644231412254011230044
|
||||||
|
120320134105242421434423353553635756666465645446464476746533434474737333355643266531333324433212400
|
||||||
|
040301032133333254244335264252755376435754666436667554445363634375377335452223443455551432333010144
|
||||||
|
122213043542434415443363356663454534757746355453573654756377543673443533255466446625122132310014334
|
||||||
|
404243133333412213345434336533364653576735676667576876848337555643553537554265552455111211141430132
|
||||||
|
443341301142235415336322424546477554637688787745866488887577434344636437734332223546335121555322312
|
||||||
|
010101032453544354452355447644336446437444776676584487868688446743777537543333245666541212524431033
|
||||||
|
130342114125121245655353346445355733446776587588784546588474685553536367574445523434254125522412333
|
||||||
|
201242125553223436463223777745535566487874456667845657466784588644655657455355352552555444112241410
|
||||||
|
234243354255336642454256767534444878687668756444875858587854778474484437455656353656253411335452400
|
||||||
|
314411514514125254223353563444477554768588585448654748855456656667558676453446723446433551542333323
|
||||||
|
320425133145356325256655577477467888556845884576957768675647786647464447677575756555366251552252023
|
||||||
|
402024545131232242524557435777674845786545558766585956759687647846545584454443736545244555225513404
|
||||||
|
221122211244626363325464534767668748756767978988996968588875755867566656577763547532353323245443324
|
||||||
|
241532435425235552535674564444576465866975867987658575886697775645646467874734565535246546512244511
|
||||||
|
003324252512442566553463345787864877859757886699855979689556865965885747456343365533654353244413223
|
||||||
|
212315155352232566544737454548674574998798699555866589956966599795788486474536636336336342425134412
|
||||||
|
415441242523246256336374766665674457785867567956675565789686897696764587674446666642422423644424325
|
||||||
|
003554554162525244354667375865755578679858897996697678587867758755877644755534673566366364215111142
|
||||||
|
125233324364265264545556378688676958976975966767698999896779575577774547466453456456443363332524521
|
||||||
|
133515233335323373765654467667486986756665797876767877886899897979969475847765767637544446523515551
|
||||||
|
423321431443554355375376748446757899656688998798978687676986796699688855776746674753723255464344423
|
||||||
|
135533214666522656775554775567665797957679899988997898976779768787598768878445373375735633533152423
|
||||||
|
424233114545442654745646856857767575855668667669968786879669768579688844877458655735443652256255431
|
||||||
|
122311356255465443775736754747756597959866677969777897778796669799996864878444747533472262262432453
|
||||||
|
444412515423634374457557568574698568569796689667999968899788697787968667768664344766546653236143151
|
||||||
|
152311513646633365333568844555559779697686687699777998989779788768756594585758837374575424224211225
|
||||||
|
432411444656462746443756865787956975798986999787977978996987778795768586656655473453364365634145515
|
||||||
|
512553242524235344467755668868885977997876879978998878787888776866887566586456466377353633526612112
|
||||||
|
115351124324666765477575484768566785899876668997898988879879687896986577677786744336653645225533134
|
||||||
|
521325356522544377445774755666867759866698988779997998778687879779588576866784766376455535443334445
|
||||||
|
433451166554445354353554886675567598968878879979777887878988976979689787756548837435743345242455141
|
||||||
|
251112342434644676347767747746557587886869778877788877789787767787779598548856756754774536542212331
|
||||||
|
255533535452264557543768667886686886969966689777797988888776799775755889645756557644656535253352415
|
||||||
|
324425154344254736457678866646677886667896679787789878898879666995998757877665757356457366362624453
|
||||||
|
133124434355236446553476678549686757888986787979777777777688968798699766877778645555763233323653111
|
||||||
|
222452162524456534544666745659767986569977869888798889797967869896588579678645466757742223536551125
|
||||||
|
424113153224246464437444666655586769888767899997999998888899787785789988565667547344466324245444121
|
||||||
|
342222535222265477673374467445978889589796696777887788896778866766575958886864746654456432465143345
|
||||||
|
343222443646553344666565758455597897568767997897989877768698886656896987444854633767335332566315312
|
||||||
|
031554353342263455343465844688566996587977697767668887776787776985778754456646747553435562222553224
|
||||||
|
433344426223464443364358688754655656655796979887796696799797776855755885854676557736723432655514323
|
||||||
|
013424132332422364434378758577758958968878668787687777668989797955778846555856344635566224523432451
|
||||||
|
425553255655633236466566556555858699675969687978968799698978595977567446657483654746364253324544543
|
||||||
|
432514124535636275635556647685849565689989686678799779666769657669586678877883365364425535653142315
|
||||||
|
234213331454244233774547658465845955685598696976697898886596997865578648447647767565654326321345225
|
||||||
|
033142335256632253667547655784646566787758855877679696866998778855965474867574633636266434253231343
|
||||||
|
433312355254243222736457466486484557878576698897857857878667659897748755645557367664665624322214245
|
||||||
|
414352553244643424464634565857556876595979575859559697897855757678648446474443347476454343621315123
|
||||||
|
142445323134524455344767565745845466776955777775867689676669795765547875554364474423523255433452550
|
||||||
|
420122443552465225677645453567777645666955697588578797786675779777688864467444476525625534353143351
|
||||||
|
013443533555256553426677376778475746848576769888786588999657647784787744733675443533555552342334414
|
||||||
|
041143134325455654456573473653567744748677959966765568889765584875786654736746477425243323345412331
|
||||||
|
432143141143446546334633656476476747668864878778688989957788768655568457357565474424624643255141123
|
||||||
|
433102225554544652566677347757675544755546776854548575485655786465456345347635444252452425412221021
|
||||||
|
323443424115135364655624436464533765445864646766688454775574785855547635756475456566323553413444404
|
||||||
|
040133323452356462366536677466667655766665575477656846545868855587636377637445452653223313533353431
|
||||||
|
112321424255322325434562636744647576545484488884676746485886457756657434733352222326531315442212112
|
||||||
|
414000041225332224365336457576353475444476854684468466666787764643346356664452563552325454125532334
|
||||||
|
333211225554233356326636546733667664766764488678465547455847554453346674333644366565122142144303010
|
||||||
|
201332104431213354534342624674574463634343535468776645455555777363557644444632234452452514524001241
|
||||||
|
221121011452151314652546563557737463367364573534653347663557476557753774362253653622553112413343020
|
||||||
|
301020124355152323443536262535766773343757377576554465333456475773466764562232455333212154220142002
|
||||||
|
322244112312155113454636553224336764436375336773533577673334677767346562553664626122341142230310021
|
||||||
|
023103242244551224134442622342463557736536665447475654776476664656746264566536561531213151202033312
|
||||||
|
000241244142514451335326646524645362354365656733573556434643567466354436652444155224421243124420312
|
||||||
|
211134103233321112311333366243566524426453645455335474755773645624422266326533321441535122300041202
|
||||||
|
010100412012005141235135226623364644564632374554665337675444336522352336344211133431343203034321031
|
||||||
|
120100431404011341421515543345452262445624345326474644544443332326425454424431513314250240023131303
|
||||||
|
302230432233042151414231553363365325522333634334265345542443426352642445554145124343411121104121203
|
||||||
|
303233311431323211311335332253563563355242335445366433543356662343656654554132224132234403131422203
|
||||||
|
113031120441440344151555331254253525425556245652343434526624622453624343111341315343030233140303323
|
||||||
|
113030023221043232305142142324135442534246224522233522334666345254334253143442354430224400423233033
|
||||||
|
031102021123340100023323433221314345163424223524353422623255522232122453215412122243144210131021220
|
||||||
|
123100111112040244104314311535251111141234335442354234236235354514311422435123332031213231120131013
|
||||||
|
221222103112033302010413133424335241315253243263446652241133155434215112225523013040443233102021312
|
||||||
|
000012122130221202130324443534215451343511144224113442315342555214421524454224402343214132100123030
|
||||||
|
112012230223002044203111222225321532514541153222214115443212344354545231533442344002011210202230120
|
||||||
|
221200232013222231032340233141433354514311213113224441111332422254143133440204220101431230200002121
|
||||||
|
211212213121303211020441232042142451254444244521121152121224435112515234204202321124222332312210022
|
||||||
|
202120032200122003044340422223002041534554215334252122413441432141223402244034330212233311001312221
|
2000
input/09.txt
Normal file
2000
input/09.txt
Normal file
File diff suppressed because it is too large
Load Diff
145
input/10.txt
Normal file
145
input/10.txt
Normal file
@ -0,0 +1,145 @@
|
|||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 5
|
||||||
|
addx 21
|
||||||
|
addx -16
|
||||||
|
noop
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 4
|
||||||
|
addx 1
|
||||||
|
addx 4
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
addx 4
|
||||||
|
addx -9
|
||||||
|
noop
|
||||||
|
addx 19
|
||||||
|
addx -5
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 5
|
||||||
|
addx 1
|
||||||
|
addx -38
|
||||||
|
addx 5
|
||||||
|
addx -2
|
||||||
|
addx 2
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 7
|
||||||
|
addx 9
|
||||||
|
addx 20
|
||||||
|
addx -3
|
||||||
|
addx -18
|
||||||
|
addx 2
|
||||||
|
addx 5
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx -2
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 7
|
||||||
|
addx 3
|
||||||
|
addx -2
|
||||||
|
addx 2
|
||||||
|
addx -28
|
||||||
|
addx -7
|
||||||
|
addx 5
|
||||||
|
noop
|
||||||
|
addx 2
|
||||||
|
addx 32
|
||||||
|
addx -27
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 7
|
||||||
|
noop
|
||||||
|
addx 22
|
||||||
|
addx -19
|
||||||
|
noop
|
||||||
|
addx 5
|
||||||
|
noop
|
||||||
|
addx -7
|
||||||
|
addx 17
|
||||||
|
addx -7
|
||||||
|
noop
|
||||||
|
addx -20
|
||||||
|
addx 27
|
||||||
|
noop
|
||||||
|
addx -16
|
||||||
|
addx -20
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
addx 3
|
||||||
|
addx 15
|
||||||
|
addx -8
|
||||||
|
addx -2
|
||||||
|
addx -6
|
||||||
|
addx 14
|
||||||
|
addx 4
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx -17
|
||||||
|
addx 22
|
||||||
|
noop
|
||||||
|
addx 5
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 2
|
||||||
|
noop
|
||||||
|
addx 3
|
||||||
|
addx -32
|
||||||
|
addx -5
|
||||||
|
noop
|
||||||
|
addx 4
|
||||||
|
addx 3
|
||||||
|
addx -2
|
||||||
|
addx 34
|
||||||
|
addx -27
|
||||||
|
addx 5
|
||||||
|
addx 16
|
||||||
|
addx -18
|
||||||
|
addx 7
|
||||||
|
noop
|
||||||
|
addx -2
|
||||||
|
addx -1
|
||||||
|
addx 8
|
||||||
|
addx 14
|
||||||
|
addx -9
|
||||||
|
noop
|
||||||
|
addx -15
|
||||||
|
addx 16
|
||||||
|
addx 2
|
||||||
|
addx -35
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 3
|
||||||
|
addx 4
|
||||||
|
noop
|
||||||
|
addx 1
|
||||||
|
addx 4
|
||||||
|
addx 1
|
||||||
|
noop
|
||||||
|
addx 4
|
||||||
|
addx 2
|
||||||
|
addx 3
|
||||||
|
addx -5
|
||||||
|
addx 19
|
||||||
|
addx -9
|
||||||
|
addx 2
|
||||||
|
addx 4
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
addx 3
|
||||||
|
addx 2
|
||||||
|
noop
|
||||||
|
noop
|
||||||
|
noop
|
55
input/11.txt
Normal file
55
input/11.txt
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
Monkey 0:
|
||||||
|
Starting items: 54, 82, 90, 88, 86, 54
|
||||||
|
Operation: new = old * 7
|
||||||
|
Test: divisible by 11
|
||||||
|
If true: throw to monkey 2
|
||||||
|
If false: throw to monkey 6
|
||||||
|
|
||||||
|
Monkey 1:
|
||||||
|
Starting items: 91, 65
|
||||||
|
Operation: new = old * 13
|
||||||
|
Test: divisible by 5
|
||||||
|
If true: throw to monkey 7
|
||||||
|
If false: throw to monkey 4
|
||||||
|
|
||||||
|
Monkey 2:
|
||||||
|
Starting items: 62, 54, 57, 92, 83, 63, 63
|
||||||
|
Operation: new = old + 1
|
||||||
|
Test: divisible by 7
|
||||||
|
If true: throw to monkey 1
|
||||||
|
If false: throw to monkey 7
|
||||||
|
|
||||||
|
Monkey 3:
|
||||||
|
Starting items: 67, 72, 68
|
||||||
|
Operation: new = old * old
|
||||||
|
Test: divisible by 2
|
||||||
|
If true: throw to monkey 0
|
||||||
|
If false: throw to monkey 6
|
||||||
|
|
||||||
|
Monkey 4:
|
||||||
|
Starting items: 68, 89, 90, 86, 84, 57, 72, 84
|
||||||
|
Operation: new = old + 7
|
||||||
|
Test: divisible by 17
|
||||||
|
If true: throw to monkey 3
|
||||||
|
If false: throw to monkey 5
|
||||||
|
|
||||||
|
Monkey 5:
|
||||||
|
Starting items: 79, 83, 64, 58
|
||||||
|
Operation: new = old + 6
|
||||||
|
Test: divisible by 13
|
||||||
|
If true: throw to monkey 3
|
||||||
|
If false: throw to monkey 0
|
||||||
|
|
||||||
|
Monkey 6:
|
||||||
|
Starting items: 96, 72, 89, 70, 88
|
||||||
|
Operation: new = old + 4
|
||||||
|
Test: divisible by 3
|
||||||
|
If true: throw to monkey 1
|
||||||
|
If false: throw to monkey 2
|
||||||
|
|
||||||
|
Monkey 7:
|
||||||
|
Starting items: 79
|
||||||
|
Operation: new = old + 8
|
||||||
|
Test: divisible by 19
|
||||||
|
If true: throw to monkey 4
|
||||||
|
If false: throw to monkey 5
|
41
input/12.txt
Normal file
41
input/12.txt
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
abaaaaacccccccccccccccccccccccccccccccccccccccaaaaaaaccccaaaaaaaaaaaaaaaaacccccaaaaaacccccccccccccccccccccccaaaaaaaaccccccccccccccccccccccccccccccccaaaaaa
|
||||||
|
abaaaaaacccaaaacccccccccccccccccccccccaccccccccaaaaaaaaccaaaaaaaaaaaaaaaaccccccaaaaaacccccccccccccccccccccccccaaaaccccccccccccccccccccccccccccccccccaaaaaa
|
||||||
|
abaaaaaacccaaaacccccccccccccccccaaaaaaaacccccccaaaaaaaaacaaaaaaaaaaaaacccccccccaaaaacccccccccccccccccccccccccaaaaacccccccccccccccccccaaaccccccccccccaaaaaa
|
||||||
|
abaaacaccccaaaaccccccccccccccccccaaaaaacccccccccaaaaaaaccccaaaaaaaaaaacccccccccaaaaacccccccccccccccccccccccccaacaaaccccccccccccccccccaaacccccccccccccccaaa
|
||||||
|
abaaacccccccaaacccccccccccaacccccaaaaaaccccccccaaaaaaccccccaacaaaaaaaacccccccccccccccccccccccaaccccccccccccccacccaaaaacccccccccaaccccaaacccccccccccccccaaa
|
||||||
|
abccccccccccccccccccccccccaaaaccaaaaaaaacccccccaaaaaaaccccccccaaaaaaaaaccccccccccaacccccccccaaaccccccccccccccccccacaaacccccccccaaaaccaaacccccccccccccccaac
|
||||||
|
abccccccccccccccccccccccaaaaaacaaaaaaaaaaccccccaaccaaaaacccccaaaaccaaaaccccccccccaaacaacccccaaacaaacccaaccccccccaaaaaaaacccccccaaaaakkkkkkcccccccccccccccc
|
||||||
|
abccccccccccccccccccccccaaaaaccaaaaaaaaaacccccccccccaaaaaaccccacccaaaaaccccccccccaaaaaaccaaaaaaaaaaaaaaaccccccccaaaaaaaaccccccccaaajkkkkkkkaccccccaacccccc
|
||||||
|
abcccccccccccccccccccccccaaaaacacacaaaccccccccccccccaaaaaaccccccccaaaacccccccccaaaaaaacccaaaaaaaaaaaaaaaaaccccccccaaaaaccccccccccjjjkkkkkkkkccaaaaaacccccc
|
||||||
|
abcccccccccccccccccccccccaacaacccccaaacccaccccccccccaaaaaaccccccccaaaacccccccccaaaaaaacccccaaaaaacaaaaaaaacccccccaaaaacccccccjjjjjjjooopppkkkcaaaaaaaccccc
|
||||||
|
abcccccccccccccccccaacaacccccccccccaaaaaaacccccccccccaaaaacccccccccccccccccccccccaaaaaaccccaaaaaaccaaaaaaacccccccaaaaaacciijjjjjjjjoooopppkkkcaaaaaaaacccc
|
||||||
|
abccccccccccaaaccccaaaaacccccccccccccaaaaacccccccccccaaaaccccccccccccccccccccccccaacaaaccccaaaaaaacaaaaacccccccccaccaaaciiiijjjjjjoooopppppkllcaaaaaaacccc
|
||||||
|
abccaaccccccaaaaacaaaaacccccccccccccaaaaaacccccccccccccccccccccccccccccccccccccccaacccccccaaaacaaaaaaaaacccaaccccaaaaaciiiiinoooooooouuuupplllaaaaaacccccc
|
||||||
|
abcaaacccccaaaaaacaaaaaacccccccccccaaaaaaaaccccccccaacaccccccccccccccccccccccccccccccccccccaccccccccccaaccaaaccccaaaaaciiinnnooooooouuuuuppplllaaacacccccc
|
||||||
|
abaaaaaacccaaaaaacccaaaacccccccccccaaaaaaaaccccccccaaaaccccccccccccccccccccccccccccccccccccccccccccccccaaaaacaacaaaaaaiiinnnnntttoouuuuuupppllllcccccccccc
|
||||||
|
abaaaaaaccccaaaaacccaaccccccccccacccccaaccccccccccaaaaaccccccccccccccccccccccccccccccccccccccccccccccccaaaaaaaacaaaaaaiiinnnnttttuuuuxxuuupppllllccccccccc
|
||||||
|
abaaaaacccccaacaaccccccccccccccaaaccccaacccccaacccaaaaaacccccccccccccccccccccccccccccccccccccccccccccccccaaaaaccaaaaaaiiinnnttttxxuuxxyyuuppppllllcccccccc
|
||||||
|
abaaaacccccccccccccccccccccaaacaaaccccccaaacaaaaccacaaaacccccccccccccccccccccccccccccccccccaacccccccccccaaaaaccccaaaccciinnntttxxxxxxxyyvvvqqqqqlllccccccc
|
||||||
|
abaaaaaccccccccccccccccccccaaaaaaaaaacccaaaaaaacccccaaccccccccccccccccccccccccccccccccccccaaacccccccccccaacaaaccccccccciiinntttxxxxxxxyyvvvvvqqqqljjcccccc
|
||||||
|
abccaaaccaccccccccaaacccccccaaaaaaaaaccccaaaaaacccccccccccccccccccccccccccccccaacccccccaaaaacaaccccccccccccaacccccccccchhinnnttxxxxxxyyyyyvvvvqqqjjjcccccc
|
||||||
|
SbccccaaaacccccccaaaaaacccccccaaaaaccccccaaaaaaaaccccccccccccccccccccaaccccccaaaaccccccaaaaaaaacccccccccccccccccccccccchhhnnntttxxxxEzyyyyyvvvqqqjjjcccccc
|
||||||
|
abccccaaaacccccccaaaaaaccccccaaaaaacccccaaaaaaaaaacccccccccccccccccccaaccccccaaaaccccccccaaaaacccccccccccccccccccccccccchhhnntttxxxyyyyyyyvvvvqqqjjjcccccc
|
||||||
|
abcccaaaaaaccccccaaaaaacccccaaaaaaaccccaaaaaaaaaacccccccccccccccccaaaaaaaacccaaaacccccccaaaaaccccccccccccccccccccccccccchhmmmttxxxyyyyyyvvvvvqqqjjjdcccccc
|
||||||
|
abcccaaaaaacccccccaaaaacccccaaacaaacaaaaaaaaaaccccccccccccaaacccccaaaaaaaaccccccccccccccaacaaacccccccaacaaacccccccccccchhhmmmtswwwyyyyyyvvvqqqqjjjjdddcccc
|
||||||
|
abcccccaacccccccccaacaacccccccccccacaaaaaccaaaccccccccccaaaaacccccccaaaacccccccccccccccccccaaccccccccaaaaaacccccccccccchhhmmssswwwwwwyyywvrqqqjjjjdddccccc
|
||||||
|
abcccccccccccccccccccccccccccccccccaaaaaccccaaccccccccacaaaaaacccccaaaaacccccccccccccccccccccccccccccaaaaaacccccccccccchhhmmssswwwwwwywywwrrqjjjjddddccccc
|
||||||
|
abcccccccccccccccccccccccccccccccccaaaaaccccccccaaacaaacaaaaaacccccaaaaaaccccccccccccccccccccccccccccaaaaaaaccccccccccchhmmmsssswwsswwwwwwrrkkjjddddcccccc
|
||||||
|
abccccccccccccccccccccccccccccccccccaaaaacccccccaaaaaaacaaaaaccccccaaccaacccccccccccaaccccccccccccccaaaaaaaacaacaaccccchhhmmmsssssssswwwwrrrkkjddddaaccccc
|
||||||
|
abcccccccccccccccccccccccccaaaaaccccaacccccccccccaaaaaacaaaaacccccccccccccaacccccccaaaaaacccccccccccaaaaaaaacaaaaaccccchhgmmmmssssssrrwwwrrrkkddddaaaccccc
|
||||||
|
abcccccccccccccccccccccccccaaaaacccccccccccccccccaaaaaaaacccccccccccccccaaaaaaccccccaaaaaccccaaccccccccaaacccaaaaaaccccgggmmmmmmllllrrrrrrrkkkeedaaaaccccc
|
||||||
|
abcccccccccccaaccccccccccccaaaaaacccccccccccccccaaaaaaaaacccccccccccccccaaaaaaccccaaaaaaacccaaaacccccccaaccccaaaaaaccccggggmmmmllllllrrrrrkkkkeedaaaaacccc
|
||||||
|
abcccccccccccaaacaacaaaccccaaaaaaccccccccccccccaaaaaaaaaacccccccccccccccaaaaaaccccaaaaaaaaccaaaacccccccccccccaaaaaccccccgggggglllllllllrrkkkkeeeaaaaaacccc
|
||||||
|
abcccccccccccaaaaaacaaaacccaaaaaaccccccccccccccaaacaaaaaaccccccccccccccccaaaaaccccaaaaaaaaccaaaacccccccccccaaccaaaccccccgggggggggffflllkkkkkkeeeaaaaaacccc
|
||||||
|
abaccccccccaaaaaaaccaaaacccccaaacccccccccccccccccccaaaaaacaccccccccaaccccaaaacccccccaaacacccccccccccccccaaaaaccccccccccccccgggggffffflllkkkkeeeccaaacccccc
|
||||||
|
abaccccccccaaaaaaaccaaacccccccccccccccccaaaccccccccaaacaaaaaccccccaaacccccccccccccaaaacccccccccccccccccccaaaaaccccccccccccccccccaffffffkkkeeeeeccaaccccccc
|
||||||
|
abaaaccccccccaaaaaaccccccccccccccccccccaaaaaacccccccaaaaaaaacaaaacaaacccccccccaaaaaacccccccccccccccccccccaaaaaccccccccccccccccccccaffffffeeeeecccccccccccc
|
||||||
|
abaacccccccccaacaaaccccccccccccccccccccaaaaaaccccccccaaaaaccaaaaaaaaacccccccccaaaaaaaaccccccccccaaccccccaaaaacccccccccccccccccccccaaaffffeeeecccccccccccaa
|
||||||
|
abaacccccccccaaccccccccccccccccaaccccccaaaaacaaccaacccaaaaacaaaaaaaaacccccccccaaaaaaaaccccccaaacaacccccccccaacccccccccccccccccccccaaaccceaecccccccccccccaa
|
||||||
|
abaacccccccccccccccccccccccccccaaaaaacccaaaaaaaaaaaccaaacaaccaaaaaaaaaaaaacccccaaaaaaacccccccaaaaaccccccccccccccccccccccccccccccccaaacccccccccccccccaaacaa
|
||||||
|
abcccccccccccccccccccccccccccccaaaaaccccaacaacaaaaacccaaccccccaaaaaaaaaaaacccccaaaaacccccccccaaaaaaaccccccccccccccccccccccccccccccaaacccccccccccccccaaaaaa
|
||||||
|
abcccccccccccccccccccccccccccaaaaaaaccccccccaaaaaaaaccccccccccaaaaaaaaaaccccccaaaaaaccccccccaaaaaaaaccccccccccccccccccccccccccccccccccccccccccccccccaaaaaa
|
@ -2,4 +2,29 @@ use crate::read;
|
|||||||
|
|
||||||
pub fn run() {
|
pub fn run() {
|
||||||
let input = read("01");
|
let input = read("01");
|
||||||
|
let elves = vec![0];
|
||||||
|
|
||||||
|
let mut elves = input.lines().fold(elves, |mut acc, x|{
|
||||||
|
if x.is_empty() {
|
||||||
|
acc.push(0);
|
||||||
|
} else {
|
||||||
|
let num: i32 = x.parse().unwrap();
|
||||||
|
*acc.last_mut().unwrap() += num;
|
||||||
|
}
|
||||||
|
acc
|
||||||
|
});
|
||||||
|
elves.sort();
|
||||||
|
elves.reverse();
|
||||||
|
|
||||||
|
#[cfg(feature="part1")]
|
||||||
|
{
|
||||||
|
let a = elves.first().unwrap();
|
||||||
|
eprintln!("Part 01: {}", *a);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(feature="part2")]
|
||||||
|
{
|
||||||
|
let b = elves[..3].iter().sum::<i32>();
|
||||||
|
eprintln!("Part 02: {}", b);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
107
src/day02/mod.rs
Normal file
107
src/day02/mod.rs
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
use crate::read;
|
||||||
|
|
||||||
|
#[derive(Clone)]
|
||||||
|
struct Hand {
|
||||||
|
pub letter: char
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<&str> for Hand {
|
||||||
|
fn from(s: &str) -> Self {
|
||||||
|
Self { letter: s.chars().next().unwrap() }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Hand {
|
||||||
|
pub fn score(&self) -> i32 {
|
||||||
|
match self.letter {
|
||||||
|
'A' => 1,
|
||||||
|
'B' => 2,
|
||||||
|
'C' => 3,
|
||||||
|
'X' => 1,
|
||||||
|
'Y' => 2,
|
||||||
|
'Z' => 3,
|
||||||
|
_ => panic!("Unknown hand {}", self.letter)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn outcome(&self, other: &Hand) -> i32 {
|
||||||
|
match self.score() - other.score() {
|
||||||
|
-1 => 0,
|
||||||
|
-2 => 6,
|
||||||
|
0 => 3,
|
||||||
|
1 => 6,
|
||||||
|
2 => 0,
|
||||||
|
_ => panic!("Unknown match {} vs {}", self.letter, other.letter)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn outcome_b(&self) -> i32 {
|
||||||
|
match self.letter {
|
||||||
|
'X' => 0,
|
||||||
|
'Y' => 3,
|
||||||
|
'Z' => 6,
|
||||||
|
_ => panic!("Unknown outcome {}", self.letter)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn for_outcome(&self, enemy: &Hand) -> Self {
|
||||||
|
let letter = match (self.outcome_b(), enemy.letter) {
|
||||||
|
(o, l) if o == 3 => l,
|
||||||
|
(o, l) if o == 0 && l == 'A' => 'C',
|
||||||
|
(o, l) if o == 0 && l == 'B' => 'A',
|
||||||
|
(o, l) if o == 0 && l == 'C' => 'B',
|
||||||
|
(o, l) if o == 6 && l == 'A' => 'B',
|
||||||
|
(o, l) if o == 6 && l == 'B' => 'C',
|
||||||
|
(o, l) if o == 6 && l == 'C' => 'A',
|
||||||
|
(o, l)=> panic!("Unknown pairing {}/{}", o, l)
|
||||||
|
};
|
||||||
|
Self {
|
||||||
|
letter
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Round {
|
||||||
|
pub enemy: Hand,
|
||||||
|
pub me: Hand,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Round {
|
||||||
|
pub fn score(&self) -> i32 {
|
||||||
|
self.me.score() + self.me.outcome(&self.enemy)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn score_b(&self) -> i32 {
|
||||||
|
let me = self.me.for_outcome(&self.enemy);
|
||||||
|
me.score() + self.me.outcome_b()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn run() {
|
||||||
|
let input = read("02");
|
||||||
|
let rounds = input
|
||||||
|
.lines()
|
||||||
|
.map(|l| {
|
||||||
|
let hands = l
|
||||||
|
.split_once(' ')
|
||||||
|
.map(|c|
|
||||||
|
(c.0.into(),
|
||||||
|
c.1.into())
|
||||||
|
).unwrap();
|
||||||
|
Round {
|
||||||
|
enemy: hands.0,
|
||||||
|
me: hands.1,
|
||||||
|
}
|
||||||
|
}).map(|r|(r.score(), r.score_b()))
|
||||||
|
.fold((0, 0), |agg, cur|(agg.0 + cur.0, agg.1 + cur.1));
|
||||||
|
|
||||||
|
#[cfg(feature = "part1")]
|
||||||
|
{
|
||||||
|
eprintln!("Day 2, Part 01: {}", rounds.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "part2")]
|
||||||
|
{
|
||||||
|
eprintln!("Day 2, Part 02: {}", rounds.1);
|
||||||
|
}
|
||||||
|
}
|
47
src/day03/mod.rs
Normal file
47
src/day03/mod.rs
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
use crate::read;
|
||||||
|
|
||||||
|
fn val(c: char) -> u32 {
|
||||||
|
if c.is_lowercase() {
|
||||||
|
c as u32 - 96
|
||||||
|
} else {
|
||||||
|
26 + c as u32 - 64
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn run() {
|
||||||
|
let input = read("03");
|
||||||
|
|
||||||
|
#[cfg(feature = "part1")]
|
||||||
|
{
|
||||||
|
let lines: u32 = input
|
||||||
|
.lines()
|
||||||
|
.map(|l| {
|
||||||
|
let l = l.to_string();
|
||||||
|
let len = l.len() / 2;
|
||||||
|
let left = &l[0..len];
|
||||||
|
let right = &l[len..];
|
||||||
|
let lc = left.chars().find(|c| right.chars().any(|rc| rc == *c));
|
||||||
|
val(lc.unwrap())
|
||||||
|
})
|
||||||
|
.sum();
|
||||||
|
println!("Day 3, Part 01: {}", lines);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "part2")]
|
||||||
|
{
|
||||||
|
let lines: u32 = input.lines().collect::<Vec<_>>()[..] // Not a fan of collect here
|
||||||
|
.chunks(3)
|
||||||
|
.map(|l| {
|
||||||
|
let first = l[0];
|
||||||
|
let second = l[1];
|
||||||
|
let third = l[2];
|
||||||
|
|
||||||
|
let common = first
|
||||||
|
.chars()
|
||||||
|
.find(|f| second.chars().any(|s| s == *f) && third.chars().any(|t| t == *f));
|
||||||
|
val(common.unwrap())
|
||||||
|
})
|
||||||
|
.sum();
|
||||||
|
println!("Day 3, Part 02: {}", lines);
|
||||||
|
}
|
||||||
|
}
|
33
src/day04/mod.rs
Normal file
33
src/day04/mod.rs
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
use crate::read;
|
||||||
|
use tuple_map::*;
|
||||||
|
|
||||||
|
fn get_ranges(elf: &str) -> std::ops::RangeInclusive<i32> {
|
||||||
|
let r = elf.split_once('-').unwrap().map(|e| e.parse().unwrap());
|
||||||
|
r.0..=r.1
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn run() {
|
||||||
|
let input = read("04");
|
||||||
|
|
||||||
|
let lines = input
|
||||||
|
.lines()
|
||||||
|
.map(|l| l.split_once(',').unwrap().map(get_ranges))
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
#[cfg(feature = "part1")]
|
||||||
|
{
|
||||||
|
let count = lines
|
||||||
|
.iter()
|
||||||
|
.filter(|(a, b)| a.clone().all(|x| b.contains(&x)) || b.clone().all(|x| a.contains(&x)))
|
||||||
|
.count();
|
||||||
|
println!("Day 4, Part 01: {}", count);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "part2")]
|
||||||
|
{
|
||||||
|
let count = lines
|
||||||
|
.iter()
|
||||||
|
.filter(|(a, b)| a.clone().any(|x| b.contains(&x)) || b.clone().any(|x| a.contains(&x)))
|
||||||
|
.count();
|
||||||
|
println!("Day 4, Part 02: {}", count);
|
||||||
|
}
|
||||||
|
}
|
64
src/day05/mod.rs
Normal file
64
src/day05/mod.rs
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
use crate::read;
|
||||||
|
|
||||||
|
pub fn run() {
|
||||||
|
let input = read("05");
|
||||||
|
|
||||||
|
let lines = input.split_once("\n\n").unwrap();
|
||||||
|
let mut stacks: Vec<Vec<char>> = lines
|
||||||
|
.0
|
||||||
|
.lines()
|
||||||
|
.fold(vec![], |mut agg, l| {
|
||||||
|
let length = l.len();
|
||||||
|
let mut idx = 0;
|
||||||
|
while idx <= length {
|
||||||
|
if let Some(s1) = l.chars().nth(1 + idx * 4) {
|
||||||
|
if !s1.is_whitespace() && !s1.is_numeric() {
|
||||||
|
while idx >= agg.len() {
|
||||||
|
agg.push(vec![]);
|
||||||
|
}
|
||||||
|
agg.get_mut(idx).unwrap().push(s1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
idx += 1;
|
||||||
|
}
|
||||||
|
agg
|
||||||
|
});
|
||||||
|
stacks.iter_mut().for_each(|s|s.reverse());
|
||||||
|
|
||||||
|
let re = regex::Regex::new(r"move (\d+) from (\d+) to (\d+)").unwrap();
|
||||||
|
let instructions = lines.1.lines()
|
||||||
|
.filter(|l| !l.is_empty())
|
||||||
|
.map(|l| {
|
||||||
|
let capt = re.captures(l).unwrap();
|
||||||
|
(capt[1].parse::<usize>().unwrap(),
|
||||||
|
capt[2].parse::<usize>().unwrap() - 1,
|
||||||
|
capt[3].parse::<usize>().unwrap() - 1)
|
||||||
|
}).collect::<Vec<_>>();
|
||||||
|
|
||||||
|
#[cfg(feature = "part1")]
|
||||||
|
{
|
||||||
|
let mut stacks = stacks.clone();
|
||||||
|
instructions.iter().for_each(|(count, from, to)| {
|
||||||
|
for _i in 0..*count {
|
||||||
|
let c2 = stacks.get_mut(*from).unwrap().pop().unwrap();
|
||||||
|
stacks.get_mut(*to).unwrap().push(c2);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
let chars = stacks.iter().map(|s|s.last().unwrap())
|
||||||
|
.collect::<String>();
|
||||||
|
println!("Day 5, Part 01: {}", chars);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "part2")]
|
||||||
|
{
|
||||||
|
instructions.iter().for_each(|(count, from, to)| {
|
||||||
|
let src = stacks.get_mut(*from).unwrap();
|
||||||
|
let range = src.len()-count..;
|
||||||
|
let mut crates = src.drain(range).collect();
|
||||||
|
stacks.get_mut(*to).unwrap().append(&mut crates);
|
||||||
|
});
|
||||||
|
let chars = stacks.iter().map(|s|s.last().unwrap())
|
||||||
|
.collect::<String>();
|
||||||
|
println!("Day 5, Part 02: {}", chars);
|
||||||
|
}
|
||||||
|
}
|
27
src/day06/mod.rs
Normal file
27
src/day06/mod.rs
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
use crate::read;
|
||||||
|
use std::collections::HashSet;
|
||||||
|
|
||||||
|
fn check(chars: &[char], len: usize) -> usize {
|
||||||
|
chars
|
||||||
|
.windows(len)
|
||||||
|
.enumerate()
|
||||||
|
.find(|(_idx, w)| w.iter().collect::<HashSet<_>>().len() == len)
|
||||||
|
.unwrap()
|
||||||
|
.0
|
||||||
|
+ len
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn run() {
|
||||||
|
let input = read("06");
|
||||||
|
let chars = input.chars().collect::<Vec<_>>();
|
||||||
|
|
||||||
|
#[cfg(feature = "part1")]
|
||||||
|
{
|
||||||
|
println!("Day 6, Part 01: {}", check(&chars, 4));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "part2")]
|
||||||
|
{
|
||||||
|
println!("Day 6, Part 02: {}", check(&chars, 14));
|
||||||
|
}
|
||||||
|
}
|
66
src/day07/mod.rs
Normal file
66
src/day07/mod.rs
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
use crate::read;
|
||||||
|
use indextree::Arena;
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
struct Directory {
|
||||||
|
pub size: usize,
|
||||||
|
pub name: String
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn run() {
|
||||||
|
let arena = &mut Arena::new();
|
||||||
|
let mut current_directory = arena.new_node(Directory {
|
||||||
|
size: 0,
|
||||||
|
name: "/".into(),
|
||||||
|
});
|
||||||
|
let root = current_directory;
|
||||||
|
|
||||||
|
for line in read("07").lines().skip(1) {
|
||||||
|
if line.starts_with("$ cd") {
|
||||||
|
current_directory = match line.split_once("cd ").unwrap().1 {
|
||||||
|
dirname if ".." == dirname => arena.get(current_directory).unwrap().parent().unwrap(),
|
||||||
|
dirname => current_directory
|
||||||
|
.children(arena)
|
||||||
|
.find(|c|arena.get(*c).unwrap().get().name == dirname)
|
||||||
|
.unwrap_or_else(||{
|
||||||
|
let nc = arena.new_node(Directory {
|
||||||
|
size: 0,
|
||||||
|
name: dirname.into(),
|
||||||
|
});
|
||||||
|
current_directory.append(nc, arena);
|
||||||
|
nc
|
||||||
|
})
|
||||||
|
};
|
||||||
|
} else if line.chars().next().unwrap().is_numeric() {
|
||||||
|
let filesize: usize = line.split_once(" ").unwrap().0.parse().unwrap();
|
||||||
|
arena.get_mut(current_directory).unwrap().get_mut().size += filesize;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let total = root.descendants(arena).map(|desc|{
|
||||||
|
desc
|
||||||
|
.descendants(arena)
|
||||||
|
.map(|d|arena.get(d).unwrap().get().size)
|
||||||
|
.sum::<usize>()
|
||||||
|
}).collect::<Vec<_>>();
|
||||||
|
|
||||||
|
#[cfg(feature = "part1")]
|
||||||
|
{
|
||||||
|
println!("Day 7, Part 01: {}", total.clone().iter()
|
||||||
|
.filter(|s| *s <= &100000)
|
||||||
|
.sum::<usize>());
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "part2")]
|
||||||
|
{
|
||||||
|
let total_used = root.descendants(arena)
|
||||||
|
.map(|d|arena.get(d).unwrap().get().size)
|
||||||
|
.sum::<usize>();
|
||||||
|
let free_needed = total_used - 40000000;
|
||||||
|
|
||||||
|
println!("Day 7, Part 02: {}", total.iter()
|
||||||
|
.filter(|s|*s >= &free_needed)
|
||||||
|
.min()
|
||||||
|
.unwrap());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
83
src/day08/mod.rs
Normal file
83
src/day08/mod.rs
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
use crate::read;
|
||||||
|
|
||||||
|
pub fn run() {
|
||||||
|
let grid: Vec<Vec<u32>> = read("08")
|
||||||
|
.lines()
|
||||||
|
.map(|l| {
|
||||||
|
l.chars()
|
||||||
|
.map(|c| c.to_digit(10).unwrap())
|
||||||
|
.collect::<Vec<_>>()
|
||||||
|
})
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
|
let width = grid.first().unwrap().len();
|
||||||
|
|
||||||
|
let res = grid
|
||||||
|
.iter()
|
||||||
|
.enumerate()
|
||||||
|
.skip(1)
|
||||||
|
.flat_map(|(row, row_vec)| {
|
||||||
|
row_vec
|
||||||
|
.iter()
|
||||||
|
.enumerate()
|
||||||
|
.skip(1)
|
||||||
|
.map(|(col, height)| {
|
||||||
|
let values = [
|
||||||
|
if let Some(sc_score) = (0..col)
|
||||||
|
.rev()
|
||||||
|
.map(|col_left| (col - col_left, row_vec[col_left]))
|
||||||
|
.find(|(_sc_score, other_height)| other_height >= height)
|
||||||
|
{
|
||||||
|
(1, sc_score.0)
|
||||||
|
} else {
|
||||||
|
(0, col)
|
||||||
|
},
|
||||||
|
if let Some(sc_score) = (col + 1..width)
|
||||||
|
.map(|col_right| (col_right - col, row_vec[col_right]))
|
||||||
|
.find(|(_sc_score, other_height)| other_height >= height)
|
||||||
|
{
|
||||||
|
(1, sc_score.0)
|
||||||
|
} else {
|
||||||
|
(0, width - col - 1)
|
||||||
|
},
|
||||||
|
if let Some(sc_score) = (0..row)
|
||||||
|
.rev()
|
||||||
|
.map(|row_above| (row - row_above, grid[row_above][col]))
|
||||||
|
.find(|(_sc_score, other_height)| other_height >= height)
|
||||||
|
{
|
||||||
|
(1, sc_score.0)
|
||||||
|
} else {
|
||||||
|
(0, row)
|
||||||
|
},
|
||||||
|
if let Some(sc_score) = grid
|
||||||
|
.iter()
|
||||||
|
.enumerate()
|
||||||
|
.skip(row + 1)
|
||||||
|
.map(|(row_below, l)| (row_below - row, l[col]))
|
||||||
|
.find(|(_sc_score, other_height)| other_height >= height)
|
||||||
|
{
|
||||||
|
(1, sc_score.0)
|
||||||
|
} else {
|
||||||
|
(0, grid.len() - row - 1)
|
||||||
|
},
|
||||||
|
];
|
||||||
|
let is_visible = values.map(|e| e.0).iter().sum::<i32>() < 4;
|
||||||
|
let scenic = values.map(|e| e.1).iter().product::<usize>();
|
||||||
|
(is_visible, scenic)
|
||||||
|
})
|
||||||
|
.collect::<Vec<_>>()
|
||||||
|
})
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
|
#[cfg(feature = "part1")]
|
||||||
|
{
|
||||||
|
let count = res.iter().filter(|e| e.0).count();
|
||||||
|
println!("Day 8, Part 01: {}", count);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "part2")]
|
||||||
|
{
|
||||||
|
let max_score = res.iter().map(|e| e.1).max().unwrap();
|
||||||
|
println!("Day 8, Part 02: {}", max_score);
|
||||||
|
}
|
||||||
|
}
|
117
src/day09/mod.rs
Normal file
117
src/day09/mod.rs
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
use crate::read;
|
||||||
|
use std::collections::HashSet;
|
||||||
|
use itertools::Itertools;
|
||||||
|
|
||||||
|
#[derive(Debug, PartialEq, Eq, Default, Clone, Hash)]
|
||||||
|
struct Position {
|
||||||
|
pub x: i32,
|
||||||
|
pub y: i32,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Position {
|
||||||
|
pub fn move_right(&self) -> Self {
|
||||||
|
Self {
|
||||||
|
x: self.x + 1,
|
||||||
|
y: self.y,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pub fn move_left(&self) -> Self {
|
||||||
|
Self {
|
||||||
|
x: self.x - 1,
|
||||||
|
y: self.y,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pub fn move_up(&self) -> Self {
|
||||||
|
Self {
|
||||||
|
x: self.x,
|
||||||
|
y: self.y - 1,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pub fn move_down(&self) -> Self {
|
||||||
|
Self {
|
||||||
|
x: self.x,
|
||||||
|
y: self.y + 1,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn follow_head(&self, head: &Position) -> Self {
|
||||||
|
// Based on jenarvaezg/aoc2022
|
||||||
|
// https://old.reddit.com/r/adventofcode/comments/zgnice/2022_day_9_solutions/izi6s4p/
|
||||||
|
if self.x.abs_diff(head.x) < 2 && self.y.abs_diff(head.y) < 2 {
|
||||||
|
self.clone()
|
||||||
|
} else {
|
||||||
|
Self {
|
||||||
|
x: self.x + (head.x - self.x).signum(),
|
||||||
|
y: self.x + (head.y - self.y).signum(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Chain {
|
||||||
|
pub knots: Vec<Position>,
|
||||||
|
visited: HashSet<Position>
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Chain {
|
||||||
|
pub fn new(num_knots: usize) -> Self {
|
||||||
|
Self {
|
||||||
|
knots: vec![Position::default(); num_knots],
|
||||||
|
visited: HashSet::with_capacity(10000)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
pub fn num_visited(&self) -> usize {
|
||||||
|
self.visited.len()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn move_knots(&mut self, direction: &str, count: usize) {
|
||||||
|
let move_head_func = match direction {
|
||||||
|
"R" => Position::move_right,
|
||||||
|
"U" => Position::move_up,
|
||||||
|
"L" => Position::move_left,
|
||||||
|
"D" => Position::move_down,
|
||||||
|
_ => unreachable!(),
|
||||||
|
};
|
||||||
|
for _c in 0..count {
|
||||||
|
self.knots[0] = move_head_func(&mut self.knots[0]);
|
||||||
|
for i in 1..self.knots.len() {
|
||||||
|
self.knots[i] = self.knots[i].follow_head(&self.knots[i - 1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
self.visited.insert(self.knots.last().unwrap().clone());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn run() {
|
||||||
|
let res = simulate(vec![2, 10]);
|
||||||
|
#[cfg(feature = "part1")]
|
||||||
|
{
|
||||||
|
println!("Day 9, Part 01: {}", res[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "part2")]
|
||||||
|
{
|
||||||
|
println!("Day 9, Part 02: {}", res[1]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn simulate(chain_sizes: Vec<usize>) -> Vec<usize> {
|
||||||
|
let chains = read("09")
|
||||||
|
.lines()
|
||||||
|
.filter(|l|!l.is_empty())
|
||||||
|
.map(|l|l.split_once(' ').unwrap())
|
||||||
|
.map(|(dir, count)|(dir, count.parse::<usize>().unwrap()))
|
||||||
|
.fold(chain_sizes
|
||||||
|
.iter()
|
||||||
|
.map(|c|Chain::new(*c))
|
||||||
|
.collect_vec(),
|
||||||
|
|mut chains, (dir, count)| {
|
||||||
|
|
||||||
|
chains
|
||||||
|
.iter_mut()
|
||||||
|
.for_each(|chain|chain.move_knots(dir, count));
|
||||||
|
chains
|
||||||
|
});
|
||||||
|
chains.iter().map(|c|c.num_visited()).collect()
|
||||||
|
}
|
21
src/day10/mod.rs
Normal file
21
src/day10/mod.rs
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
use crate::puter::Puter;
|
||||||
|
use crate::read;
|
||||||
|
|
||||||
|
pub fn run() {
|
||||||
|
let input = read("10");
|
||||||
|
let mut device = Puter::new();
|
||||||
|
device.run(&input);
|
||||||
|
|
||||||
|
#[cfg(feature = "part1")]
|
||||||
|
{
|
||||||
|
println!(
|
||||||
|
"Day 10, Part 01: {}",
|
||||||
|
device.signal_strengths().iter().sum::<i32>()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "part2")]
|
||||||
|
{
|
||||||
|
println!("Day 10, Part 02: \n{}", device.output().join("\n"));
|
||||||
|
}
|
||||||
|
}
|
104
src/day11/mod.rs
Normal file
104
src/day11/mod.rs
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
use crate::read;
|
||||||
|
use itertools::Itertools;
|
||||||
|
|
||||||
|
#[derive(Debug, PartialEq, Eq, Clone, Hash)]
|
||||||
|
enum Operation {
|
||||||
|
Multiply(u64),
|
||||||
|
Add(u64),
|
||||||
|
Square,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, PartialEq, Eq, Clone, Hash)]
|
||||||
|
struct Monkey {
|
||||||
|
pub items: Vec<u64>,
|
||||||
|
pub operation: Operation,
|
||||||
|
pub test: u64,
|
||||||
|
pub throw_to: [usize; 2],
|
||||||
|
pub inspected: usize,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Monkey {
|
||||||
|
pub fn parse(s: &str) -> Self {
|
||||||
|
let (_, items, operation, operand, test, throw_true, throw_false) = sscanf::sscanf!(
|
||||||
|
s,
|
||||||
|
"Monkey {usize}:
|
||||||
|
Starting items: {str}
|
||||||
|
Operation: new = old {str} {str}
|
||||||
|
Test: divisible by {u64}
|
||||||
|
If true: throw to monkey {usize}
|
||||||
|
If false: throw to monkey {usize}"
|
||||||
|
)
|
||||||
|
.unwrap();
|
||||||
|
let items = items.split(", ").map(|i| i.parse().unwrap()).collect_vec();
|
||||||
|
let operation = match operation {
|
||||||
|
"*" => match operand {
|
||||||
|
"old" => Operation::Square,
|
||||||
|
n => Operation::Multiply(n.parse().unwrap()),
|
||||||
|
},
|
||||||
|
"+" => Operation::Add(operand.parse().unwrap()),
|
||||||
|
_ => unreachable!(),
|
||||||
|
};
|
||||||
|
Self {
|
||||||
|
items,
|
||||||
|
operation,
|
||||||
|
test,
|
||||||
|
throw_to: [throw_true, throw_false],
|
||||||
|
inspected: 0,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn simulate(monkeys: &mut Vec<Monkey>, is_part_1: bool) {
|
||||||
|
let test_product: u64 = monkeys.iter().map(|m| m.test).product();
|
||||||
|
let rounds = if is_part_1 { 20 } else { 10_000 };
|
||||||
|
for _ in 0..rounds {
|
||||||
|
for i in 0..monkeys.len() {
|
||||||
|
let items = monkeys[i].items.clone();
|
||||||
|
for mut item in items {
|
||||||
|
item = match monkeys[i].operation {
|
||||||
|
Operation::Square => item * item,
|
||||||
|
Operation::Add(n) => item + n,
|
||||||
|
Operation::Multiply(n) => item * n,
|
||||||
|
};
|
||||||
|
item = if is_part_1 {
|
||||||
|
item / 3
|
||||||
|
} else {
|
||||||
|
item % test_product
|
||||||
|
};
|
||||||
|
let other_monkey =
|
||||||
|
monkeys[i].throw_to[if item % monkeys[i].test == 0 { 0 } else { 1 }];
|
||||||
|
monkeys[other_monkey].items.push(item);
|
||||||
|
}
|
||||||
|
monkeys[i].inspected += monkeys[i].items.len();
|
||||||
|
monkeys[i].items = Vec::new();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn calculate_monkey_business(monkeys: &[Monkey]) -> usize {
|
||||||
|
monkeys
|
||||||
|
.iter()
|
||||||
|
.map(|m| m.inspected)
|
||||||
|
.sorted()
|
||||||
|
.rev()
|
||||||
|
.take(2)
|
||||||
|
.product()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn run() {
|
||||||
|
let input = read("11");
|
||||||
|
let mut monkeys = input.split("\n\n").map(Monkey::parse).collect_vec();
|
||||||
|
|
||||||
|
#[cfg(feature = "part1")]
|
||||||
|
{
|
||||||
|
let monkeys = &mut monkeys.clone();
|
||||||
|
simulate(monkeys, true);
|
||||||
|
println!("Day 11, Part 01: {}", calculate_monkey_business(monkeys));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "part2")]
|
||||||
|
{
|
||||||
|
simulate(&mut monkeys, false);
|
||||||
|
println!("Day 11, Part 02: {}", calculate_monkey_business(&monkeys));
|
||||||
|
}
|
||||||
|
}
|
BIN
src/day12/.DS_Store
vendored
Normal file
BIN
src/day12/.DS_Store
vendored
Normal file
Binary file not shown.
103
src/day12/mod.rs
Normal file
103
src/day12/mod.rs
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
use crate::read;
|
||||||
|
use itertools::Itertools;
|
||||||
|
|
||||||
|
#[derive(Debug, PartialEq, Eq, Clone, Hash, Default)]
|
||||||
|
struct Coord {
|
||||||
|
pub row: usize,
|
||||||
|
pub col: usize,
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn run() {
|
||||||
|
let input = read("12");
|
||||||
|
let lines = input.lines();
|
||||||
|
let mut start: Coord = Default::default();
|
||||||
|
let mut target: Coord = Default::default();
|
||||||
|
let map = lines
|
||||||
|
.enumerate()
|
||||||
|
.map(|(row, l)| {
|
||||||
|
l.chars()
|
||||||
|
.enumerate()
|
||||||
|
.map(|(col, c)| match c {
|
||||||
|
'S' => {
|
||||||
|
start = Coord {
|
||||||
|
row,
|
||||||
|
col,
|
||||||
|
};
|
||||||
|
0
|
||||||
|
}
|
||||||
|
'E' => {
|
||||||
|
target = Coord {
|
||||||
|
row,
|
||||||
|
col,
|
||||||
|
};
|
||||||
|
25
|
||||||
|
}
|
||||||
|
c => (c as u8) - ('a' as u8),
|
||||||
|
})
|
||||||
|
.collect_vec()
|
||||||
|
})
|
||||||
|
.collect_vec();
|
||||||
|
|
||||||
|
#[cfg(feature = "part1")]
|
||||||
|
{
|
||||||
|
println!("Day 12, Part 01: {:?}", bfs(&map, start, target.clone()).unwrap());
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(feature = "part2")]
|
||||||
|
{
|
||||||
|
let min = map
|
||||||
|
.iter()
|
||||||
|
.enumerate()
|
||||||
|
.flat_map(|(row, v)| {
|
||||||
|
v.iter()
|
||||||
|
.enumerate()
|
||||||
|
.filter(|(_, vv)| **vv == 0)
|
||||||
|
.map(|(col, _)| Coord {
|
||||||
|
row,
|
||||||
|
col,
|
||||||
|
})
|
||||||
|
.collect_vec()
|
||||||
|
})
|
||||||
|
.filter_map(|start| bfs(&map, start.clone(), target.clone()))
|
||||||
|
.min()
|
||||||
|
.unwrap();
|
||||||
|
println!("Day 12, Part 02: {:?}", min);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn bfs(map: &Vec<Vec<u8>>, start: Coord, target: Coord) -> Option<usize> {
|
||||||
|
let mut visited = vec![vec![false; map[0].len()]; map.len()];
|
||||||
|
let mut queue = std::collections::VecDeque::new();
|
||||||
|
queue.push_back((start, 0));
|
||||||
|
|
||||||
|
while let Some((next, path_length)) = queue.pop_front() {
|
||||||
|
if next == target {
|
||||||
|
return Some(path_length);
|
||||||
|
}
|
||||||
|
for coord in [(1, 0), (-1, 0), (0, 1), (0, -1)]
|
||||||
|
.iter()
|
||||||
|
.filter_map(|(dr, dc)|make_coord((next.row as isize) + dr, (next.col as isize) + dc, &map)) {
|
||||||
|
if map[next.row][next.col] + 1
|
||||||
|
< map[coord.row][coord.col] || visited[coord.row][coord.col] {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
visited[coord.row][coord.col] = true;
|
||||||
|
queue.push_back((coord, path_length + 1));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
None
|
||||||
|
}
|
||||||
|
|
||||||
|
fn make_coord(row: isize, col: isize, map: &Vec<Vec<u8>>) -> Option<Coord> {
|
||||||
|
if row >= 0
|
||||||
|
&& col >= 0
|
||||||
|
&& row < map.len() as isize
|
||||||
|
&& (col as usize) < map[row as usize].len() {
|
||||||
|
Some(Coord {
|
||||||
|
row: row as usize,
|
||||||
|
col: col as usize
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
}
|
51
src/main.rs
51
src/main.rs
@ -1,17 +1,58 @@
|
|||||||
|
use chrono::prelude::*;
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
use std::time::Instant;
|
use std::time::Instant;
|
||||||
use chrono::prelude::*;
|
|
||||||
mod day01;
|
mod day01;
|
||||||
|
mod day02;
|
||||||
|
mod day03;
|
||||||
|
mod day04;
|
||||||
|
mod day05;
|
||||||
|
mod day06;
|
||||||
|
mod day07;
|
||||||
|
mod day08;
|
||||||
|
mod day09;
|
||||||
|
mod day10;
|
||||||
|
mod day11;
|
||||||
|
mod day12;
|
||||||
|
mod puter;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let today = Local::now().day();
|
let today = Local::now().day();
|
||||||
let now = Instant::now();
|
let now = Instant::now();
|
||||||
if cfg!(feature ="day01") || (cfg!(feature ="today") && today == 1) {
|
if cfg!(feature = "day01") || (cfg!(feature = "today") && today == 1) {
|
||||||
day01::run();
|
day01::run();
|
||||||
}
|
}
|
||||||
if cfg!(feature ="day02") || (cfg!(feature ="today") && today == 2) {
|
if cfg!(feature = "day02") || (cfg!(feature = "today") && today == 2) {
|
||||||
todo!()
|
day02::run();
|
||||||
//day02::run();
|
}
|
||||||
|
if cfg!(feature = "day03") || (cfg!(feature = "today") && today == 3) {
|
||||||
|
day03::run();
|
||||||
|
}
|
||||||
|
if cfg!(feature = "day04") || (cfg!(feature = "today") && today == 4) {
|
||||||
|
day04::run();
|
||||||
|
}
|
||||||
|
if cfg!(feature = "day05") || (cfg!(feature = "today") && today == 5) {
|
||||||
|
day05::run();
|
||||||
|
}
|
||||||
|
if cfg!(feature = "day06") || (cfg!(feature = "today") && today == 6) {
|
||||||
|
day06::run();
|
||||||
|
}
|
||||||
|
if cfg!(feature = "day07") || (cfg!(feature = "today") && today == 7) {
|
||||||
|
day07::run();
|
||||||
|
}
|
||||||
|
if cfg!(feature = "day08") || (cfg!(feature = "today") && today == 8) {
|
||||||
|
day08::run();
|
||||||
|
}
|
||||||
|
if cfg!(feature = "day09") || (cfg!(feature = "today") && today == 9) {
|
||||||
|
day09::run();
|
||||||
|
}
|
||||||
|
if cfg!(feature = "day10") || (cfg!(feature = "today") && today == 10) {
|
||||||
|
day10::run();
|
||||||
|
}
|
||||||
|
if cfg!(feature = "day11") || (cfg!(feature = "today") && today == 11) {
|
||||||
|
day11::run();
|
||||||
|
}
|
||||||
|
if cfg!(feature = "day12") || (cfg!(feature = "today") && today == 12) {
|
||||||
|
day12::run();
|
||||||
}
|
}
|
||||||
println!("Finished, time taken: {:?}", now.elapsed())
|
println!("Finished, time taken: {:?}", now.elapsed())
|
||||||
}
|
}
|
||||||
|
105
src/puter/mod.rs
Normal file
105
src/puter/mod.rs
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
#[derive(Debug, PartialEq, Eq, Clone, Hash)]
|
||||||
|
pub(crate) enum Command {
|
||||||
|
AddX(i32),
|
||||||
|
Noop,
|
||||||
|
}
|
||||||
|
impl Command {
|
||||||
|
fn from_str(s: &str) -> Self {
|
||||||
|
match s {
|
||||||
|
"noop" => Command::Noop,
|
||||||
|
s => {
|
||||||
|
let (c, i) = s.split_once(' ').unwrap();
|
||||||
|
match (c, i.parse::<i32>()) {
|
||||||
|
("addx", Ok(i)) => Self::AddX(i),
|
||||||
|
_ => unreachable!(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn num_cycles(&self) -> usize {
|
||||||
|
match self {
|
||||||
|
Self::Noop => 1,
|
||||||
|
Self::AddX(_) => 2,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub(crate) struct Puter {
|
||||||
|
register_x: (i32, i32),
|
||||||
|
cycle: usize,
|
||||||
|
pixel_row: [bool; Puter::LINE_WIDTH],
|
||||||
|
rows: Vec<String>,
|
||||||
|
cycles_processing_left: usize,
|
||||||
|
|
||||||
|
signal_strengths: Vec<i32>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Puter {
|
||||||
|
const LINE_WIDTH: usize = 40;
|
||||||
|
const SPRITE_WIDTH: usize = 3;
|
||||||
|
const SPRITE_WIDTH_HALF: usize = Puter::SPRITE_WIDTH / 2;
|
||||||
|
|
||||||
|
pub fn new() -> Self {
|
||||||
|
Self {
|
||||||
|
register_x: (1, 1),
|
||||||
|
cycle: 1,
|
||||||
|
pixel_row: [false; Puter::LINE_WIDTH],
|
||||||
|
rows: Vec::with_capacity(6),
|
||||||
|
cycles_processing_left: 0,
|
||||||
|
signal_strengths: Vec::with_capacity(6),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn execute(&mut self, cmd: Command) {
|
||||||
|
match cmd {
|
||||||
|
Command::Noop => {}
|
||||||
|
Command::AddX(v) => {
|
||||||
|
self.register_x.1 += v;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
self.cycles_processing_left = cmd.num_cycles();
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn run(&mut self, program: &str) {
|
||||||
|
let mut lines = program.lines();
|
||||||
|
loop {
|
||||||
|
if self.cycles_processing_left == 0 {
|
||||||
|
match lines.next() {
|
||||||
|
Some(s) => self.execute(Command::from_str(s)),
|
||||||
|
_ => return,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
self.cycles_processing_left -= 1;
|
||||||
|
|
||||||
|
let pixel = (self.cycle - 1) % Puter::LINE_WIDTH;
|
||||||
|
let is_lit = pixel.abs_diff(self.register_x.0 as usize) <= Puter::SPRITE_WIDTH_HALF;
|
||||||
|
self.pixel_row[pixel] = is_lit;
|
||||||
|
if pixel == Puter::LINE_WIDTH - 1 {
|
||||||
|
self.rows.push(
|
||||||
|
self.pixel_row
|
||||||
|
.map(|l| if l { '#' } else { ' ' })
|
||||||
|
.iter()
|
||||||
|
.collect(),
|
||||||
|
);
|
||||||
|
} else if pixel == (Puter::LINE_WIDTH / 2) - 1 {
|
||||||
|
self.signal_strengths
|
||||||
|
.push(self.cycle as i32 * self.register_x.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
if self.cycles_processing_left == 0 {
|
||||||
|
self.register_x.0 = self.register_x.1;
|
||||||
|
}
|
||||||
|
self.cycle += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn signal_strengths(&self) -> Vec<i32> {
|
||||||
|
self.signal_strengths.clone()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn output(&self) -> Vec<String> {
|
||||||
|
self.rows.clone()
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user