Compare commits
7 Commits
d7e478ca15
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
260450a702 | ||
|
|
7a203d3572 | ||
|
|
923ea69669 | ||
|
|
043a777732 | ||
|
|
0c814889b5 | ||
|
|
f3b87802c4 | ||
|
|
4b55f4524e |
72
.vscode/launch.json
vendored
72
.vscode/launch.json
vendored
@@ -188,6 +188,78 @@
|
|||||||
},
|
},
|
||||||
"args": [],
|
"args": [],
|
||||||
"cwd": "${workspaceFolder}"
|
"cwd": "${workspaceFolder}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "lldb",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "Debug executable 'part07'",
|
||||||
|
"cargo": {
|
||||||
|
"args": [
|
||||||
|
"build",
|
||||||
|
"--bin=part07",
|
||||||
|
"--package=advent-of-code-2023"
|
||||||
|
],
|
||||||
|
"filter": {
|
||||||
|
"name": "part07",
|
||||||
|
"kind": "bin"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"args": [],
|
||||||
|
"cwd": "${workspaceFolder}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "lldb",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "Debug executable 'part08'",
|
||||||
|
"cargo": {
|
||||||
|
"args": [
|
||||||
|
"build",
|
||||||
|
"--bin=part08",
|
||||||
|
"--package=advent-of-code-2023"
|
||||||
|
],
|
||||||
|
"filter": {
|
||||||
|
"name": "part08",
|
||||||
|
"kind": "bin"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"args": [],
|
||||||
|
"cwd": "${workspaceFolder}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "lldb",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "Debug executable 'part09'",
|
||||||
|
"cargo": {
|
||||||
|
"args": [
|
||||||
|
"build",
|
||||||
|
"--bin=part09",
|
||||||
|
"--package=advent-of-code-2023"
|
||||||
|
],
|
||||||
|
"filter": {
|
||||||
|
"name": "part09",
|
||||||
|
"kind": "bin"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"args": [],
|
||||||
|
"cwd": "${workspaceFolder}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "lldb",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "Debug executable 'part15'",
|
||||||
|
"cargo": {
|
||||||
|
"args": [
|
||||||
|
"build",
|
||||||
|
"--bin=part15",
|
||||||
|
"--package=advent-of-code-2023"
|
||||||
|
],
|
||||||
|
"filter": {
|
||||||
|
"name": "part15",
|
||||||
|
"kind": "bin"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"args": [],
|
||||||
|
"cwd": "${workspaceFolder}"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
363
Cargo.lock
generated
363
Cargo.lock
generated
@@ -1,363 +0,0 @@
|
|||||||
# This file is automatically @generated by Cargo.
|
|
||||||
# It is not intended for manual editing.
|
|
||||||
version = 3
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "advent-of-code-2023"
|
|
||||||
version = "0.1.0"
|
|
||||||
dependencies = [
|
|
||||||
"cached",
|
|
||||||
"rayon",
|
|
||||||
"regex",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "ahash"
|
|
||||||
version = "0.8.6"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-if",
|
|
||||||
"once_cell",
|
|
||||||
"version_check",
|
|
||||||
"zerocopy",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "aho-corasick"
|
|
||||||
version = "1.1.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0"
|
|
||||||
dependencies = [
|
|
||||||
"memchr",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "allocator-api2"
|
|
||||||
version = "0.2.16"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "0942ffc6dcaadf03badf6e6a2d0228460359d5e34b57ccdc720b7382dfbd5ec5"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "autocfg"
|
|
||||||
version = "1.1.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "cached"
|
|
||||||
version = "0.46.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "c7c8c50262271cdf5abc979a5f76515c234e764fa025d1ba4862c0f0bcda0e95"
|
|
||||||
dependencies = [
|
|
||||||
"ahash",
|
|
||||||
"cached_proc_macro",
|
|
||||||
"cached_proc_macro_types",
|
|
||||||
"hashbrown",
|
|
||||||
"instant",
|
|
||||||
"once_cell",
|
|
||||||
"thiserror",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "cached_proc_macro"
|
|
||||||
version = "0.18.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "c878c71c2821aa2058722038a59a67583a4240524687c6028571c9b395ded61f"
|
|
||||||
dependencies = [
|
|
||||||
"darling",
|
|
||||||
"proc-macro2",
|
|
||||||
"quote",
|
|
||||||
"syn 1.0.109",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "cached_proc_macro_types"
|
|
||||||
version = "0.1.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "3a4f925191b4367301851c6d99b09890311d74b0d43f274c0b34c86d308a3663"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "cfg-if"
|
|
||||||
version = "1.0.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "crossbeam-deque"
|
|
||||||
version = "0.8.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-if",
|
|
||||||
"crossbeam-epoch",
|
|
||||||
"crossbeam-utils",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "crossbeam-epoch"
|
|
||||||
version = "0.9.15"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7"
|
|
||||||
dependencies = [
|
|
||||||
"autocfg",
|
|
||||||
"cfg-if",
|
|
||||||
"crossbeam-utils",
|
|
||||||
"memoffset",
|
|
||||||
"scopeguard",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "crossbeam-utils"
|
|
||||||
version = "0.8.16"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-if",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "darling"
|
|
||||||
version = "0.14.4"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "7b750cb3417fd1b327431a470f388520309479ab0bf5e323505daf0290cd3850"
|
|
||||||
dependencies = [
|
|
||||||
"darling_core",
|
|
||||||
"darling_macro",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "darling_core"
|
|
||||||
version = "0.14.4"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "109c1ca6e6b7f82cc233a97004ea8ed7ca123a9af07a8230878fcfda9b158bf0"
|
|
||||||
dependencies = [
|
|
||||||
"fnv",
|
|
||||||
"ident_case",
|
|
||||||
"proc-macro2",
|
|
||||||
"quote",
|
|
||||||
"strsim",
|
|
||||||
"syn 1.0.109",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "darling_macro"
|
|
||||||
version = "0.14.4"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "a4aab4dbc9f7611d8b55048a3a16d2d010c2c8334e46304b40ac1cc14bf3b48e"
|
|
||||||
dependencies = [
|
|
||||||
"darling_core",
|
|
||||||
"quote",
|
|
||||||
"syn 1.0.109",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "either"
|
|
||||||
version = "1.9.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "fnv"
|
|
||||||
version = "1.0.7"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "hashbrown"
|
|
||||||
version = "0.14.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
|
|
||||||
dependencies = [
|
|
||||||
"ahash",
|
|
||||||
"allocator-api2",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "ident_case"
|
|
||||||
version = "1.0.1"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "instant"
|
|
||||||
version = "0.1.12"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c"
|
|
||||||
dependencies = [
|
|
||||||
"cfg-if",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "memchr"
|
|
||||||
version = "2.6.4"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "memoffset"
|
|
||||||
version = "0.9.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c"
|
|
||||||
dependencies = [
|
|
||||||
"autocfg",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "once_cell"
|
|
||||||
version = "1.18.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "proc-macro2"
|
|
||||||
version = "1.0.70"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b"
|
|
||||||
dependencies = [
|
|
||||||
"unicode-ident",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "quote"
|
|
||||||
version = "1.0.33"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae"
|
|
||||||
dependencies = [
|
|
||||||
"proc-macro2",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "rayon"
|
|
||||||
version = "1.8.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1"
|
|
||||||
dependencies = [
|
|
||||||
"either",
|
|
||||||
"rayon-core",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "rayon-core"
|
|
||||||
version = "1.12.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed"
|
|
||||||
dependencies = [
|
|
||||||
"crossbeam-deque",
|
|
||||||
"crossbeam-utils",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "regex"
|
|
||||||
version = "1.10.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343"
|
|
||||||
dependencies = [
|
|
||||||
"aho-corasick",
|
|
||||||
"memchr",
|
|
||||||
"regex-automata",
|
|
||||||
"regex-syntax",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "regex-automata"
|
|
||||||
version = "0.4.3"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f"
|
|
||||||
dependencies = [
|
|
||||||
"aho-corasick",
|
|
||||||
"memchr",
|
|
||||||
"regex-syntax",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "regex-syntax"
|
|
||||||
version = "0.8.2"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "scopeguard"
|
|
||||||
version = "1.2.0"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49"
|
|
||||||
|
|
||||||
[[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.109"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
|
|
||||||
dependencies = [
|
|
||||||
"proc-macro2",
|
|
||||||
"quote",
|
|
||||||
"unicode-ident",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "syn"
|
|
||||||
version = "2.0.39"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a"
|
|
||||||
dependencies = [
|
|
||||||
"proc-macro2",
|
|
||||||
"quote",
|
|
||||||
"unicode-ident",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "thiserror"
|
|
||||||
version = "1.0.50"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2"
|
|
||||||
dependencies = [
|
|
||||||
"thiserror-impl",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "thiserror-impl"
|
|
||||||
version = "1.0.50"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8"
|
|
||||||
dependencies = [
|
|
||||||
"proc-macro2",
|
|
||||||
"quote",
|
|
||||||
"syn 2.0.39",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "unicode-ident"
|
|
||||||
version = "1.0.12"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "version_check"
|
|
||||||
version = "0.9.4"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "zerocopy"
|
|
||||||
version = "0.7.29"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "5d075cf85bbb114e933343e087b92f2146bac0d55b534cbb8188becf0039948e"
|
|
||||||
dependencies = [
|
|
||||||
"zerocopy-derive",
|
|
||||||
]
|
|
||||||
|
|
||||||
[[package]]
|
|
||||||
name = "zerocopy-derive"
|
|
||||||
version = "0.7.29"
|
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
||||||
checksum = "86cd5ca076997b97ef09d3ad65efe811fa68c9e874cb636ccb211223a813b0c2"
|
|
||||||
dependencies = [
|
|
||||||
"proc-macro2",
|
|
||||||
"quote",
|
|
||||||
"syn 2.0.39",
|
|
||||||
]
|
|
||||||
@@ -7,5 +7,11 @@ edition = "2021"
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
cached = "0.46.1"
|
cached = "0.46.1"
|
||||||
|
criterion = "0.5.1"
|
||||||
|
num = "0.4.1"
|
||||||
rayon = "1.8.0"
|
rayon = "1.8.0"
|
||||||
regex = "1.10.2"
|
regex = "1.10.2"
|
||||||
|
|
||||||
|
[[bench]]
|
||||||
|
name = "part09"
|
||||||
|
harness = false
|
||||||
47
benches/part09.rs
Normal file
47
benches/part09.rs
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
use criterion::{criterion_group, criterion_main, Criterion};
|
||||||
|
|
||||||
|
fn load_input() -> Vec<Vec<i32>> {
|
||||||
|
let data = std::fs::read_to_string("src/bin/part09.txt")
|
||||||
|
.expect("Could not read file")
|
||||||
|
.lines()
|
||||||
|
.map(|l| {
|
||||||
|
l.split_whitespace().map(|s| s.parse::<i32>().unwrap()).collect::<Vec<_>>()
|
||||||
|
})
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
|
data
|
||||||
|
}
|
||||||
|
|
||||||
|
fn extrapolate_next_value(series: &[i32]) -> i32 {
|
||||||
|
let differences = forward_differences(series);
|
||||||
|
let mut next_value = *series.last().unwrap();
|
||||||
|
|
||||||
|
//next_value += differences.iter().skip(1).map(|d| d.last().unwrap()).sum::<i32>();
|
||||||
|
|
||||||
|
for diff in differences.iter().skip(1) {
|
||||||
|
next_value += diff.last().unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
|
next_value
|
||||||
|
}
|
||||||
|
|
||||||
|
fn forward_differences(series: &[i32]) -> Vec<Vec<i32>> {
|
||||||
|
let mut differences = vec![series.to_vec()];
|
||||||
|
|
||||||
|
while differences.last().unwrap().iter().any(|d| *d != 0) {
|
||||||
|
let last = differences.last().unwrap();
|
||||||
|
let next = last.windows(2).map(|w| w[1] - w[0]).collect();
|
||||||
|
differences.push(next);
|
||||||
|
}
|
||||||
|
|
||||||
|
differences
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
fn bench_extrapolate_next_value(c: &mut Criterion) {
|
||||||
|
let data = load_input();
|
||||||
|
c.bench_function("extrapolate_next_value", |b| b.iter(|| extrapolate_next_value(&data[0])));
|
||||||
|
}
|
||||||
|
|
||||||
|
criterion_group!(benches, bench_extrapolate_next_value);
|
||||||
|
criterion_main!(benches);
|
||||||
156
src/bin/part07.rs
Normal file
156
src/bin/part07.rs
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
use std::{collections::HashMap, time};
|
||||||
|
|
||||||
|
#[derive(Debug, PartialEq, PartialOrd, Eq, Ord, Clone, Hash)]
|
||||||
|
enum HandType {
|
||||||
|
FiveOfAKind,
|
||||||
|
FourOfAKind,
|
||||||
|
FullHouse,
|
||||||
|
ThreeOfAKind,
|
||||||
|
TwoPair,
|
||||||
|
OnePair,
|
||||||
|
HighCard,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Clone)]
|
||||||
|
struct Hand {
|
||||||
|
cards: String,
|
||||||
|
handtype: HandType,
|
||||||
|
bid: u32,
|
||||||
|
rank: u32,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Hand {
|
||||||
|
fn new(cards: String, bid: u32) -> Hand {
|
||||||
|
let handtype = get_handtype(&cards);
|
||||||
|
Hand { cards, handtype, bid, rank: 0 }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_card_rank(hand: &Hand, index: u8) -> u8 {
|
||||||
|
match hand.cards.chars().nth(index as usize).unwrap() {
|
||||||
|
'2' => 1,
|
||||||
|
'3' => 2,
|
||||||
|
'4' => 3,
|
||||||
|
'5' => 4,
|
||||||
|
'6' => 5,
|
||||||
|
'7' => 6,
|
||||||
|
'8' => 7,
|
||||||
|
'9' => 8,
|
||||||
|
'T' => 9,
|
||||||
|
'J' => 0, // 10 in Part 1, 0 in Part 2
|
||||||
|
'Q' => 11,
|
||||||
|
'K' => 12,
|
||||||
|
'A' => 13,
|
||||||
|
_ => panic!("Invalid card rank"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_handtype(cards: &String) -> HandType {
|
||||||
|
let cards = cards.chars().collect::<Vec<_>>();
|
||||||
|
let mut card_counts = HashMap::new();
|
||||||
|
|
||||||
|
for card in cards.clone() {
|
||||||
|
if card == 'J' {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let count = card_counts.entry(card).or_insert(0);
|
||||||
|
*count += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut counts: Vec<u32> = card_counts.values().map(|v| *v as u32).collect::<Vec<_>>();
|
||||||
|
counts.sort();
|
||||||
|
|
||||||
|
let total_counts = counts.iter().sum::<u32>();
|
||||||
|
if (1..5).contains(&total_counts) {
|
||||||
|
let highest_count = counts.last_mut().unwrap();
|
||||||
|
*highest_count += cards.len() as u32 - total_counts;
|
||||||
|
} else if total_counts == 0 {
|
||||||
|
counts.push(5);
|
||||||
|
}
|
||||||
|
|
||||||
|
match counts.as_slice() {
|
||||||
|
[5] => HandType::FiveOfAKind,
|
||||||
|
[1, 4] => HandType::FourOfAKind,
|
||||||
|
[2, 3] => HandType::FullHouse,
|
||||||
|
[1, 1, 3] => HandType::ThreeOfAKind,
|
||||||
|
[1, 2, 2] => HandType::TwoPair,
|
||||||
|
[1, 1, 1, 2] => HandType::OnePair,
|
||||||
|
_ => HandType::HighCard,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn sort_by_value(hands: &Vec<Hand>) -> Vec<Hand> {
|
||||||
|
let mut hands = hands.to_vec();
|
||||||
|
|
||||||
|
if hands.len() < 2 {
|
||||||
|
return hands;
|
||||||
|
}
|
||||||
|
|
||||||
|
hands.sort_by(|b, a| {
|
||||||
|
get_card_rank(a, 0).cmp(&get_card_rank(b, 0))
|
||||||
|
.then(get_card_rank(a, 1).cmp(&get_card_rank(b, 1)))
|
||||||
|
.then(get_card_rank(a, 2).cmp(&get_card_rank(b, 2)))
|
||||||
|
.then(get_card_rank(a, 3).cmp(&get_card_rank(b, 3)))
|
||||||
|
.then(get_card_rank(a, 4).cmp(&get_card_rank(b, 4)))
|
||||||
|
});
|
||||||
|
|
||||||
|
hands
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let s1 = time::Instant::now();
|
||||||
|
|
||||||
|
let mut hands = load_input();
|
||||||
|
|
||||||
|
let d1 = s1.elapsed();
|
||||||
|
println!("Loading: {:?}", d1);
|
||||||
|
|
||||||
|
let s2 = time::Instant::now();
|
||||||
|
|
||||||
|
let groups = hands.iter().fold(HashMap::new(), |mut acc, hand| {
|
||||||
|
let group = acc.entry(hand.handtype.clone()).or_insert(Vec::new());
|
||||||
|
group.push(hand.clone());
|
||||||
|
acc
|
||||||
|
});
|
||||||
|
|
||||||
|
hands = Vec::new();
|
||||||
|
|
||||||
|
for group_hands in groups.values() {
|
||||||
|
hands.extend(sort_by_value(&group_hands));
|
||||||
|
}
|
||||||
|
|
||||||
|
hands.sort_by(|a, b| a.handtype.cmp(&b.handtype));
|
||||||
|
|
||||||
|
for (i, hand) in hands.iter_mut().rev().enumerate() {
|
||||||
|
hand.rank = (i + 1) as u32;
|
||||||
|
}
|
||||||
|
|
||||||
|
hands.sort_by(|a, b| b.rank.cmp(&a.rank));
|
||||||
|
|
||||||
|
// for hand in hands.clone() {
|
||||||
|
// println!("[{:>4}] Hand: {:?}, Bid: {:>4}, Handtype: {:?} -> Win: {:>5}", hand.rank, hand.cards, hand.bid, hand.handtype, hand.rank * hand.bid);
|
||||||
|
// }
|
||||||
|
|
||||||
|
let winnings = hands.iter().map(|h| h.bid * h.rank as u32).sum::<u32>();
|
||||||
|
|
||||||
|
let d2 = s2.elapsed();
|
||||||
|
println!("Calculating: {:?}", d2);
|
||||||
|
println!("Total: {:?}", d1 + d2);
|
||||||
|
|
||||||
|
println!("Winnings: {}", winnings);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn load_input() -> Vec<Hand> {
|
||||||
|
let data = std::fs::read_to_string("src/bin/part07.txt")
|
||||||
|
.expect("Could not read file")
|
||||||
|
.lines()
|
||||||
|
.map(|l| {
|
||||||
|
let mut cards = l.split_whitespace();
|
||||||
|
let hand = cards.by_ref().next().unwrap().to_string();
|
||||||
|
let bid = cards.by_ref().next().unwrap().parse::<u32>().unwrap();
|
||||||
|
|
||||||
|
Hand::new(hand, bid)
|
||||||
|
}).collect::<Vec<_>>();
|
||||||
|
|
||||||
|
data
|
||||||
|
}
|
||||||
69
src/bin/part08.rs
Normal file
69
src/bin/part08.rs
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
use std::{collections::HashMap, time};
|
||||||
|
use num::integer::lcm;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let t1 = time::Instant::now();
|
||||||
|
|
||||||
|
let (sequence, rules) = load_input();
|
||||||
|
|
||||||
|
let d1 = t1.elapsed();
|
||||||
|
println!("Loading: {:?}", d1);
|
||||||
|
let t2 = time::Instant::now();
|
||||||
|
|
||||||
|
let mut current_positions: Vec<(String, &(String, String))> = rules.iter().filter(|(k, _)| k.ends_with("A")).map(|(k, v)| (k.to_string(), v)).collect::<Vec<_>>();
|
||||||
|
let mut starting_positions = current_positions.iter().map(|p| (p.0.to_string(), 0)).collect::<Vec<_>>();
|
||||||
|
let mut counter = 0;
|
||||||
|
|
||||||
|
for c in sequence.iter().cycle() {
|
||||||
|
current_positions = current_positions.iter().map(|cur_pos| {
|
||||||
|
if *c == 'L' {
|
||||||
|
(cur_pos.1.0.to_string(), rules.get(&cur_pos.1.0).unwrap())
|
||||||
|
} else {
|
||||||
|
(cur_pos.1.1.to_string(), rules.get(&cur_pos.1.1).unwrap())
|
||||||
|
}
|
||||||
|
}).collect::<Vec<_>>();
|
||||||
|
|
||||||
|
for (i, cur_pos) in current_positions.iter().enumerate() {
|
||||||
|
if cur_pos.0.ends_with("Z") && starting_positions[i].1 == 0 {
|
||||||
|
let start_pos = &mut starting_positions[i];
|
||||||
|
start_pos.1 = counter+1;
|
||||||
|
println!("{}: Reached {} in {} steps", start_pos.0, cur_pos.0, counter+1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if starting_positions.iter().all(|p| p.1 > 0) || current_positions.iter().all(|p| p.0.ends_with("Z")) {
|
||||||
|
let d2 = t2.elapsed();
|
||||||
|
println!("Reached ZZZ in {} steps within {:?}", counter+1, d2);
|
||||||
|
println!("Total: {:?}", d1 + d2);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
counter += 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
let lcm_pos = starting_positions.iter().fold(1, |acc, p| lcm(acc, p.1 as u64));
|
||||||
|
println!("LCM: {}", lcm_pos);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn load_input() -> (Vec<char>, HashMap<String, (String, String)>) {
|
||||||
|
let data = std::fs::read_to_string("src/bin/part08.txt")
|
||||||
|
.expect("Could not read file");
|
||||||
|
let mut lines = data.lines();
|
||||||
|
|
||||||
|
let sequence = lines.by_ref().next().unwrap().chars().collect::<Vec<_>>();
|
||||||
|
lines.next();
|
||||||
|
|
||||||
|
let mut rules: HashMap<String, (String, String)> = HashMap::new();
|
||||||
|
|
||||||
|
lines.for_each(|l| {
|
||||||
|
let mut parts = l.split("=");
|
||||||
|
let name = parts.by_ref().next().unwrap().trim().to_string();
|
||||||
|
let instructions = parts.by_ref().next().unwrap().replace("(", "").replace(")", "");
|
||||||
|
let instructions = instructions.split(',').map(|s| s.trim()).collect::<Vec<_>>();
|
||||||
|
let (left, right) = instructions.split_at(1);
|
||||||
|
|
||||||
|
rules.insert(name, (left.first().unwrap().to_string(), right.first().unwrap().to_string()));
|
||||||
|
});
|
||||||
|
|
||||||
|
(sequence, rules)
|
||||||
|
}
|
||||||
75
src/bin/part09.rs
Normal file
75
src/bin/part09.rs
Normal file
@@ -0,0 +1,75 @@
|
|||||||
|
use std::time;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let t1 = time::Instant::now();
|
||||||
|
|
||||||
|
let data = load_input();
|
||||||
|
|
||||||
|
let d1 = t1.elapsed();
|
||||||
|
println!("Loading: {:?}", d1);
|
||||||
|
let t2 = time::Instant::now();
|
||||||
|
|
||||||
|
let sum1 = data.iter().map(|d| extrapolate_next_value(&d)).sum::<i32>();
|
||||||
|
let sum2 = data.iter().map(|d| extrapolate_previous_value(&d)).sum::<i32>();
|
||||||
|
|
||||||
|
let d2 = t2.elapsed();
|
||||||
|
println!("Summing: {:?}", d2);
|
||||||
|
println!("Total: {:?}", d1 + d2);
|
||||||
|
println!("Sum1: {}", sum1);
|
||||||
|
println!("Sum2: {}", sum2);
|
||||||
|
|
||||||
|
assert_eq!(sum1, 1584748274);
|
||||||
|
assert_eq!(sum2, 1026);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn extrapolate_next_value(series: &[i32]) -> i32 {
|
||||||
|
let differences = forward_differences(series);
|
||||||
|
let mut next_value = *series.last().unwrap();
|
||||||
|
|
||||||
|
next_value += differences.iter().skip(1).map(|d| d.last().unwrap()).sum::<i32>();
|
||||||
|
|
||||||
|
// for diff in differences.iter().skip(1) {
|
||||||
|
// next_value += diff.last().unwrap();
|
||||||
|
// }
|
||||||
|
|
||||||
|
next_value
|
||||||
|
}
|
||||||
|
|
||||||
|
fn extrapolate_previous_value(series: &[i32]) -> i32 {
|
||||||
|
let differences = forward_differences(series);
|
||||||
|
let mut previous_value = *series.first().unwrap();
|
||||||
|
|
||||||
|
for (i, diff) in differences.iter().skip(1).enumerate() {
|
||||||
|
if i % 2 == 0 {
|
||||||
|
previous_value -= diff[0];
|
||||||
|
} else {
|
||||||
|
previous_value += diff[0];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
previous_value
|
||||||
|
}
|
||||||
|
|
||||||
|
fn forward_differences(series: &[i32]) -> Vec<Vec<i32>> {
|
||||||
|
let mut differences = vec![series.to_vec()];
|
||||||
|
|
||||||
|
while differences.last().unwrap().iter().any(|d| *d != 0) {
|
||||||
|
let last = differences.last().unwrap();
|
||||||
|
let next = last.windows(2).map(|w| w[1] - w[0]).collect();
|
||||||
|
differences.push(next);
|
||||||
|
}
|
||||||
|
|
||||||
|
differences
|
||||||
|
}
|
||||||
|
|
||||||
|
fn load_input() -> Vec<Vec<i32>> {
|
||||||
|
let data = std::fs::read_to_string("src/bin/part09.txt")
|
||||||
|
.expect("Could not read file")
|
||||||
|
.lines()
|
||||||
|
.map(|l| {
|
||||||
|
l.split_whitespace().map(|s| s.parse::<i32>().unwrap()).collect::<Vec<_>>()
|
||||||
|
})
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
|
data
|
||||||
|
}
|
||||||
124
src/bin/part11.rs
Normal file
124
src/bin/part11.rs
Normal file
@@ -0,0 +1,124 @@
|
|||||||
|
use std::time;
|
||||||
|
|
||||||
|
|
||||||
|
#[derive(Debug, Clone)]
|
||||||
|
#[allow(dead_code)]
|
||||||
|
struct Galaxy {
|
||||||
|
id: u16,
|
||||||
|
x: i16,
|
||||||
|
y: i16,
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let t1 = time::Instant::now();
|
||||||
|
let mut galaxy_map = load_input();
|
||||||
|
let d1 = t1.elapsed();
|
||||||
|
println!("Loading: {:?}", d1);
|
||||||
|
|
||||||
|
let t2 = time::Instant::now();
|
||||||
|
expand_map(&mut galaxy_map);
|
||||||
|
//print_map(&galaxy_map);
|
||||||
|
let d2 = t2.elapsed();
|
||||||
|
println!("Expanding: {:?}", d2);
|
||||||
|
|
||||||
|
let t3 = time::Instant::now();
|
||||||
|
let parsed_map = parse_map(&galaxy_map);
|
||||||
|
//println!("{:?}", parsed_map);
|
||||||
|
let d3 = t3.elapsed();
|
||||||
|
println!("Parsing: {:?}", d3);
|
||||||
|
|
||||||
|
let t4 = time::Instant::now();
|
||||||
|
let distances = calc_distances(&parsed_map);
|
||||||
|
let d4 = t4.elapsed();
|
||||||
|
println!("Calculating: {:?}", d4);
|
||||||
|
|
||||||
|
let d5 = t1.elapsed();
|
||||||
|
let sum_distances = distances.iter().sum::<u32>();
|
||||||
|
println!("Summing: {:?}", d5);
|
||||||
|
println!("Total: {:?}", d1 + d2 + d3 + d4 + d5);
|
||||||
|
println!("Sum of distances: {}", sum_distances);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn calc_distances(galaxies: &Vec<Galaxy>) -> Vec<u32> {
|
||||||
|
let mut distances = Vec::new();
|
||||||
|
|
||||||
|
for (i, g1) in galaxies.iter().enumerate() {
|
||||||
|
for g2 in &galaxies[i + 1..] {
|
||||||
|
let distance = ((g2.x - g1.x).abs() + (g2.y - g1.y).abs()) as u32;
|
||||||
|
distances.push(distance);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
distances
|
||||||
|
}
|
||||||
|
|
||||||
|
fn parse_map(galaxy_map: &Vec<Vec<bool>>) -> Vec<Galaxy> {
|
||||||
|
let mut galaxies = Vec::new();
|
||||||
|
|
||||||
|
for (y, row) in galaxy_map.iter().enumerate() {
|
||||||
|
for (x, c) in row.iter().enumerate() {
|
||||||
|
if *c {
|
||||||
|
galaxies.push(Galaxy {
|
||||||
|
id: galaxies.len() as u16 + 1,
|
||||||
|
x: x as i16,
|
||||||
|
y: y as i16,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
galaxies
|
||||||
|
}
|
||||||
|
|
||||||
|
#[allow(dead_code)]
|
||||||
|
fn print_map(galaxy_map: &Vec<Vec<bool>>) {
|
||||||
|
for row in galaxy_map {
|
||||||
|
for c in row {
|
||||||
|
print!("{}", if *c { '#' } else { '.' });
|
||||||
|
}
|
||||||
|
println!();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn expand_map(galaxy_map: &mut Vec<Vec<bool>>) {
|
||||||
|
let mut new_map = Vec::new();
|
||||||
|
|
||||||
|
for row in &mut *galaxy_map {
|
||||||
|
new_map.push(row.clone());
|
||||||
|
if row.iter().all(|c| !*c) {
|
||||||
|
new_map.push(row.repeat(1_000_000));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut shift_offset = 0;
|
||||||
|
for (i, _) in galaxy_map[0].iter().enumerate() {
|
||||||
|
if galaxy_map.iter().all(|row| !row[i]) {
|
||||||
|
for row in new_map.iter_mut() {
|
||||||
|
row.insert(i + shift_offset, false);
|
||||||
|
}
|
||||||
|
shift_offset += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
*galaxy_map = new_map;
|
||||||
|
}
|
||||||
|
|
||||||
|
fn load_input() -> Vec<Vec<bool>> {
|
||||||
|
let data = std::fs::read_to_string("src/bin/sources/part11.txt")
|
||||||
|
.expect("Could not read file")
|
||||||
|
.lines()
|
||||||
|
.map(|line| {
|
||||||
|
line.chars()
|
||||||
|
.map(|c| {
|
||||||
|
match c {
|
||||||
|
'#' => true,
|
||||||
|
'.' => false,
|
||||||
|
_ => panic!("Invalid input")
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.collect::<Vec<_>>()
|
||||||
|
})
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
|
data
|
||||||
|
}
|
||||||
120
src/bin/part15.rs
Normal file
120
src/bin/part15.rs
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
use std::time;
|
||||||
|
use std::collections::HashMap;
|
||||||
|
|
||||||
|
#[derive(Debug, PartialEq, Eq, Hash)]
|
||||||
|
struct Lens {
|
||||||
|
label: String,
|
||||||
|
focal_length: Option<u8>,
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let t1 = time::Instant::now();
|
||||||
|
|
||||||
|
let data = load_input1();
|
||||||
|
|
||||||
|
let d1 = t1.elapsed();
|
||||||
|
println!("Loading: {:?}", d1);
|
||||||
|
let t2 = time::Instant::now();
|
||||||
|
|
||||||
|
let sum = data.iter().map(|d| *d as u32).sum::<u32>();
|
||||||
|
|
||||||
|
let d2 = t2.elapsed();
|
||||||
|
println!("Summing: {:?}", d2);
|
||||||
|
println!("Total: {:?}", d1 + d2);
|
||||||
|
println!("Sum: {}", sum);
|
||||||
|
|
||||||
|
let t3 = time::Instant::now();
|
||||||
|
|
||||||
|
let lenses = load_input2();
|
||||||
|
let mut boxes: HashMap<u8, Vec<Lens>> = HashMap::new();
|
||||||
|
|
||||||
|
for lens in lenses {
|
||||||
|
let box_id: u8 = hash(&lens.label);
|
||||||
|
|
||||||
|
if lens.focal_length.is_none() { // - Operation
|
||||||
|
if let Some(relevant_box) = boxes.get_mut(&box_id) {
|
||||||
|
relevant_box.retain(|l| *l != lens);
|
||||||
|
if relevant_box.is_empty() {
|
||||||
|
boxes.remove(&box_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else { // = Operation
|
||||||
|
if let Some(relevant_box) = boxes.get_mut(&box_id) {
|
||||||
|
if let Some(relevant_lens) = relevant_box.iter_mut().find(|l| l.label == lens.label) {
|
||||||
|
relevant_lens.focal_length = lens.focal_length;
|
||||||
|
} else {
|
||||||
|
relevant_box.push(lens);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
boxes.insert(box_id, vec![lens]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let d3 = t3.elapsed();
|
||||||
|
println!("Hashing: {:?}", d3);
|
||||||
|
let t4 = time::Instant::now();
|
||||||
|
|
||||||
|
let mut total: u32 = 0;
|
||||||
|
for b in boxes {
|
||||||
|
for (i, l) in b.1.iter().enumerate() {
|
||||||
|
let mut product: u32 = 1 + b.0 as u32;
|
||||||
|
product *= 1 + i as u32;
|
||||||
|
product *= l.focal_length.unwrap() as u32;
|
||||||
|
total += product;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let d4 = t4.elapsed();
|
||||||
|
println!("Summing: {:?}", d4);
|
||||||
|
println!("Total: {:?}", d3 + d4);
|
||||||
|
|
||||||
|
println!("Result: {}", total);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn hash(s: &str) -> u8 {
|
||||||
|
let mut h: u32 = 0;
|
||||||
|
for c in s.chars() {
|
||||||
|
h += c as u32;
|
||||||
|
h *= 17;
|
||||||
|
h = h % 256;
|
||||||
|
}
|
||||||
|
h as u8
|
||||||
|
}
|
||||||
|
|
||||||
|
fn load_input1() -> Vec<u8> {
|
||||||
|
let data = std::fs::read_to_string("src/bin/part15.txt")
|
||||||
|
.expect("Could not read file")
|
||||||
|
.split(',')
|
||||||
|
.map(|l| {
|
||||||
|
hash(l)
|
||||||
|
})
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
|
data
|
||||||
|
}
|
||||||
|
|
||||||
|
fn load_input2() -> Vec<Lens> {
|
||||||
|
let data: Vec<Lens> = std::fs::read_to_string("src/bin/part15.txt")
|
||||||
|
.expect("Could not read file")
|
||||||
|
.split(',')
|
||||||
|
.map(|l| {
|
||||||
|
if l.contains('-') {
|
||||||
|
return Lens{
|
||||||
|
label: l.split('-').collect::<Vec<_>>()[0].to_string(),
|
||||||
|
focal_length: None
|
||||||
|
}
|
||||||
|
} else if l.contains('=') {
|
||||||
|
let parts = l.split('=').collect::<Vec<_>>();
|
||||||
|
return Lens {
|
||||||
|
label: parts[0].to_string(),
|
||||||
|
focal_length: Some(parts[1].parse::<u8>().unwrap())
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
panic!("Invalid input");
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
|
data
|
||||||
|
}
|
||||||
5
src/bin/sources/part07.sample
Normal file
5
src/bin/sources/part07.sample
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
32T3K 765
|
||||||
|
T55J5 684
|
||||||
|
KK677 28
|
||||||
|
KTJJT 220
|
||||||
|
QQQJA 483
|
||||||
1000
src/bin/sources/part07.txt
Normal file
1000
src/bin/sources/part07.txt
Normal file
File diff suppressed because it is too large
Load Diff
9
src/bin/sources/part08.sample
Normal file
9
src/bin/sources/part08.sample
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
RL
|
||||||
|
|
||||||
|
AAA = (BBB, CCC)
|
||||||
|
BBB = (DDD, EEE)
|
||||||
|
CCC = (ZZZ, GGG)
|
||||||
|
DDD = (DDD, DDD)
|
||||||
|
EEE = (EEE, EEE)
|
||||||
|
GGG = (GGG, GGG)
|
||||||
|
ZZZ = (ZZZ, ZZZ)
|
||||||
5
src/bin/sources/part08.sample2
Normal file
5
src/bin/sources/part08.sample2
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
LLR
|
||||||
|
|
||||||
|
AAA = (BBB, BBB)
|
||||||
|
BBB = (AAA, ZZZ)
|
||||||
|
ZZZ = (ZZZ, ZZZ)
|
||||||
10
src/bin/sources/part08.sample3
Normal file
10
src/bin/sources/part08.sample3
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
LR
|
||||||
|
|
||||||
|
11A = (11B, XXX)
|
||||||
|
11B = (XXX, 11Z)
|
||||||
|
11Z = (11B, XXX)
|
||||||
|
22A = (22B, XXX)
|
||||||
|
22B = (22C, 22C)
|
||||||
|
22C = (22Z, 22Z)
|
||||||
|
22Z = (22B, 22B)
|
||||||
|
XXX = (XXX, XXX)
|
||||||
752
src/bin/sources/part08.txt
Normal file
752
src/bin/sources/part08.txt
Normal file
@@ -0,0 +1,752 @@
|
|||||||
|
LRRLLRLRRRLRRRLRRLRRRLRRLRRRLRRLRRRLRLRRRLRRRLRRRLRLRRLRRRLRRRLRRLRRLRRLRLLLRRRLRRRLRLRLRRLLRRRLRRLRRRLRLRRLRRRLRRRLLRLRLLRRRLRRRLLRRRLRRRLRRRLRRLRRRLLLRRRLRLLLRLRLRLLRLRLLLRRLRRLLRRLRRRLRRLRRLRLRRLLRRLRLRRLLLRRRLLRRRLLRLRLLRRRLRLLRRLRLRRLRLRRRLLRRRLLRRLRLRRLRRLLRLRLRRRLRLRRRR
|
||||||
|
|
||||||
|
GLJ = (QQV, JTL)
|
||||||
|
JSJ = (DKN, GQN)
|
||||||
|
MGD = (BPL, LQC)
|
||||||
|
VSK = (SPH, DDH)
|
||||||
|
TSB = (MKP, TKX)
|
||||||
|
HPD = (GKG, XMX)
|
||||||
|
BLZ = (HGN, KRR)
|
||||||
|
BMQ = (JXC, HFC)
|
||||||
|
GDG = (BVJ, NBL)
|
||||||
|
LST = (PVJ, DPR)
|
||||||
|
QQQ = (RLV, SNJ)
|
||||||
|
TMV = (XGV, KCL)
|
||||||
|
NPZ = (JRD, NHL)
|
||||||
|
DDH = (NDR, XPN)
|
||||||
|
SFQ = (TKD, SQH)
|
||||||
|
RNK = (TJN, NFX)
|
||||||
|
FRS = (SCJ, FDV)
|
||||||
|
RST = (BSQ, MHQ)
|
||||||
|
DSM = (FRX, DMN)
|
||||||
|
GBN = (VBL, XRK)
|
||||||
|
GLH = (KNN, PKP)
|
||||||
|
JRD = (LDP, RNH)
|
||||||
|
SPV = (JNR, FRK)
|
||||||
|
PMD = (FXP, BKL)
|
||||||
|
MDV = (MGD, FHM)
|
||||||
|
MGG = (KMN, QPL)
|
||||||
|
FNX = (FKG, NLT)
|
||||||
|
FPH = (QXS, PBR)
|
||||||
|
DKP = (QFT, QQQ)
|
||||||
|
XVH = (PVP, GBJ)
|
||||||
|
SSP = (BHD, KRM)
|
||||||
|
JVR = (RHB, LDJ)
|
||||||
|
HCX = (RNK, LGT)
|
||||||
|
LRX = (SFN, GXD)
|
||||||
|
DXN = (NQX, KNL)
|
||||||
|
GNT = (GHV, DKG)
|
||||||
|
QVF = (NJN, FSN)
|
||||||
|
QHQ = (FXN, PNP)
|
||||||
|
CHX = (DHN, BQB)
|
||||||
|
GQD = (TLQ, XXG)
|
||||||
|
RMF = (RVF, KKR)
|
||||||
|
JHN = (NRG, RCC)
|
||||||
|
MBG = (XPV, MSB)
|
||||||
|
XJN = (SQT, XXJ)
|
||||||
|
JNR = (VTP, XSF)
|
||||||
|
NXD = (DKP, MKJ)
|
||||||
|
LSS = (KHS, BSV)
|
||||||
|
SQH = (BLH, VCG)
|
||||||
|
TLM = (DCG, BQL)
|
||||||
|
HTG = (TLF, KRB)
|
||||||
|
GGM = (KLV, PTG)
|
||||||
|
PVJ = (BHR, TRH)
|
||||||
|
PRP = (QLC, JPQ)
|
||||||
|
CVC = (KVJ, FTM)
|
||||||
|
RMH = (RPD, FFK)
|
||||||
|
MRL = (KFK, LJK)
|
||||||
|
VMG = (LSX, FPH)
|
||||||
|
DKQ = (XSM, CXK)
|
||||||
|
QBD = (BGB, GPS)
|
||||||
|
RFV = (QCG, NJD)
|
||||||
|
FDN = (QFL, DXN)
|
||||||
|
RMV = (NCJ, PMZ)
|
||||||
|
BCJ = (MDD, TMG)
|
||||||
|
BMB = (GLH, MKK)
|
||||||
|
DLQ = (JKX, VGS)
|
||||||
|
NBL = (GFQ, PRQ)
|
||||||
|
NVG = (SCS, JTS)
|
||||||
|
CBX = (MXQ, QSM)
|
||||||
|
HFJ = (NXX, VRX)
|
||||||
|
FMQ = (KDV, HFJ)
|
||||||
|
DSK = (BND, GFJ)
|
||||||
|
TRM = (MMX, BTG)
|
||||||
|
XKS = (GXD, SFN)
|
||||||
|
LDJ = (TFQ, CJK)
|
||||||
|
LFP = (TFS, LST)
|
||||||
|
PQS = (PJR, SMD)
|
||||||
|
MTA = (JPD, MVX)
|
||||||
|
FMM = (GPC, BVB)
|
||||||
|
NJD = (JMG, DPL)
|
||||||
|
VQJ = (KRM, BHD)
|
||||||
|
PXP = (BPB, JJK)
|
||||||
|
JDM = (HHQ, JXD)
|
||||||
|
BJK = (SRN, DRL)
|
||||||
|
MRS = (RPT, SQF)
|
||||||
|
RCC = (DRD, SPP)
|
||||||
|
XPG = (XRK, VBL)
|
||||||
|
JLR = (LJQ, XDP)
|
||||||
|
KLV = (SKX, SKX)
|
||||||
|
JBB = (LRB, RRT)
|
||||||
|
NDP = (KMS, DDJ)
|
||||||
|
XML = (TPD, VKQ)
|
||||||
|
TPM = (PKJ, PGR)
|
||||||
|
DGQ = (JFK, TMB)
|
||||||
|
XTL = (MPK, CTL)
|
||||||
|
VSH = (BNH, HJR)
|
||||||
|
PVG = (SPV, KCS)
|
||||||
|
CCQ = (LQB, VTK)
|
||||||
|
PLS = (HPS, CVC)
|
||||||
|
GMQ = (CTG, QHQ)
|
||||||
|
PNP = (VSK, JCV)
|
||||||
|
JPD = (KKV, FQP)
|
||||||
|
PRL = (KRB, TLF)
|
||||||
|
NMT = (HXL, NHV)
|
||||||
|
DLP = (KXR, BXQ)
|
||||||
|
NFG = (DSR, HNX)
|
||||||
|
BPB = (BTM, MGR)
|
||||||
|
JPL = (NMT, QMD)
|
||||||
|
HJG = (XJD, HHX)
|
||||||
|
BBK = (VVF, SBN)
|
||||||
|
GQL = (XNX, CKR)
|
||||||
|
BND = (SQB, KFG)
|
||||||
|
VRF = (JKS, LGG)
|
||||||
|
PXG = (QMD, NMT)
|
||||||
|
FKG = (GBS, JLR)
|
||||||
|
NCJ = (NFG, CQH)
|
||||||
|
CVM = (LFD, NPZ)
|
||||||
|
GQN = (SMM, PQH)
|
||||||
|
LJQ = (LXQ, KVG)
|
||||||
|
PFK = (HHQ, JXD)
|
||||||
|
KLQ = (JNB, DKQ)
|
||||||
|
QRP = (SCB, HCM)
|
||||||
|
LRB = (RMD, KLN)
|
||||||
|
XPP = (GMK, LKL)
|
||||||
|
LFD = (NHL, JRD)
|
||||||
|
TVK = (TMV, TJF)
|
||||||
|
MQD = (HTG, PRL)
|
||||||
|
MKJ = (QQQ, QFT)
|
||||||
|
QLF = (CHX, XSR)
|
||||||
|
MPP = (XMK, QFP)
|
||||||
|
HQQ = (PCS, PDC)
|
||||||
|
NXX = (BTN, KBJ)
|
||||||
|
JBQ = (GGH, FJL)
|
||||||
|
BGB = (JSF, MNP)
|
||||||
|
BRD = (VMF, NTR)
|
||||||
|
HCM = (RHX, KJG)
|
||||||
|
NKP = (GHV, DKG)
|
||||||
|
XJK = (TRS, DGQ)
|
||||||
|
GPS = (MNP, JSF)
|
||||||
|
NCM = (VMJ, CSC)
|
||||||
|
LSX = (PBR, QXS)
|
||||||
|
VLF = (MTL, GVK)
|
||||||
|
XFT = (XGS, CRL)
|
||||||
|
HLR = (FMM, QLH)
|
||||||
|
FFR = (XXX, BGX)
|
||||||
|
MRB = (XJD, HHX)
|
||||||
|
TVS = (MTL, GVK)
|
||||||
|
KNL = (KDN, HQQ)
|
||||||
|
PNV = (SQF, RPT)
|
||||||
|
HVB = (BBB, LLG)
|
||||||
|
RGX = (RLK, MSX)
|
||||||
|
MKB = (HNP, NGM)
|
||||||
|
FKL = (XMK, QFP)
|
||||||
|
LXQ = (GNB, TQH)
|
||||||
|
CQF = (NGF, NQF)
|
||||||
|
BSV = (KFX, HNH)
|
||||||
|
SVQ = (PXP, XQM)
|
||||||
|
BHD = (XVH, GDN)
|
||||||
|
QQB = (PCB, PCB)
|
||||||
|
DCG = (GRH, RGX)
|
||||||
|
RRT = (KLN, RMD)
|
||||||
|
KDN = (PDC, PCS)
|
||||||
|
RHJ = (VTK, LQB)
|
||||||
|
LVR = (VSH, QGS)
|
||||||
|
NHT = (LQS, DMB)
|
||||||
|
PBR = (TCF, JCC)
|
||||||
|
GBJ = (MLT, XNB)
|
||||||
|
BJB = (XPR, MBG)
|
||||||
|
PQH = (MCH, LMB)
|
||||||
|
MPM = (BSV, KHS)
|
||||||
|
SGB = (TKF, PMD)
|
||||||
|
XQM = (JJK, BPB)
|
||||||
|
TLQ = (FGM, CRC)
|
||||||
|
FXP = (BCJ, TDR)
|
||||||
|
VDG = (VMJ, CSC)
|
||||||
|
XGV = (LHS, LTS)
|
||||||
|
JKP = (PXG, JPL)
|
||||||
|
KFQ = (TSB, RNB)
|
||||||
|
NHL = (LDP, RNH)
|
||||||
|
TRS = (JFK, TMB)
|
||||||
|
PMM = (RHC, KMQ)
|
||||||
|
QMB = (PPJ, CNG)
|
||||||
|
MKH = (DDJ, KMS)
|
||||||
|
NCG = (XXX, BGX)
|
||||||
|
DBG = (SND, HMN)
|
||||||
|
GVK = (TQD, JHN)
|
||||||
|
KKM = (KKL, PBT)
|
||||||
|
HLP = (JPQ, QLC)
|
||||||
|
GPH = (JKG, DKK)
|
||||||
|
XQP = (GLH, MKK)
|
||||||
|
HRF = (BGB, GPS)
|
||||||
|
BXQ = (BDH, GQT)
|
||||||
|
NDR = (KKM, LRR)
|
||||||
|
HQR = (RGL, RMX)
|
||||||
|
PCS = (DTB, LDS)
|
||||||
|
LQB = (GMQ, HRQ)
|
||||||
|
KKR = (KTV, CMB)
|
||||||
|
NGM = (KFQ, BQJ)
|
||||||
|
KLN = (XFT, JRL)
|
||||||
|
HRR = (RHJ, CCQ)
|
||||||
|
XSF = (CKX, PLS)
|
||||||
|
BTG = (GDG, JDS)
|
||||||
|
PBT = (NVG, DVP)
|
||||||
|
CPP = (VSH, QGS)
|
||||||
|
MLN = (VGS, JKX)
|
||||||
|
JRF = (SKN, RMF)
|
||||||
|
KHS = (KFX, HNH)
|
||||||
|
DDP = (QJG, XKJ)
|
||||||
|
FGM = (TVK, TNS)
|
||||||
|
QJH = (XSL, QXP)
|
||||||
|
TNX = (NBV, KLQ)
|
||||||
|
JVC = (FBR, PFT)
|
||||||
|
XPV = (TLM, PPK)
|
||||||
|
PCK = (KBG, TGJ)
|
||||||
|
HRS = (VKM, JVF)
|
||||||
|
DKK = (NHT, ZZZ)
|
||||||
|
TJN = (KTL, QLF)
|
||||||
|
THT = (JJQ, LRJ)
|
||||||
|
JNB = (CXK, XSM)
|
||||||
|
CRL = (VXT, TBG)
|
||||||
|
RVF = (CMB, KTV)
|
||||||
|
GQT = (PBB, CVM)
|
||||||
|
QGF = (MGT, SKV)
|
||||||
|
SCJ = (CQF, KRQ)
|
||||||
|
SCM = (DPB, PMM)
|
||||||
|
KNN = (XLQ, VPB)
|
||||||
|
PPK = (BQL, DCG)
|
||||||
|
LPP = (HJG, MRB)
|
||||||
|
RRM = (RXT, PBZ)
|
||||||
|
DCT = (FTF, HVB)
|
||||||
|
PQP = (PBQ, HVR)
|
||||||
|
NTV = (SCM, GKN)
|
||||||
|
XXX = (LSS, MPM)
|
||||||
|
BKP = (LXL, LXL)
|
||||||
|
BLH = (QLV, SFJ)
|
||||||
|
SPH = (NDR, XPN)
|
||||||
|
CVF = (KDV, HFJ)
|
||||||
|
XDK = (RHJ, CCQ)
|
||||||
|
NQQ = (NTT, FVL)
|
||||||
|
TQF = (XCV, NDX)
|
||||||
|
VRX = (BTN, KBJ)
|
||||||
|
KFX = (XLN, FDN)
|
||||||
|
DMN = (TPT, JRQ)
|
||||||
|
VVF = (TPQ, CDH)
|
||||||
|
XPN = (LRR, KKM)
|
||||||
|
LQC = (TMX, LHQ)
|
||||||
|
XXT = (TLR, DDP)
|
||||||
|
PBB = (LFD, LFD)
|
||||||
|
GKF = (CHM, XTL)
|
||||||
|
SNJ = (NSR, KVD)
|
||||||
|
FKS = (PPL, PSM)
|
||||||
|
BJZ = (MVX, JPD)
|
||||||
|
JSF = (GQD, GQP)
|
||||||
|
BFM = (QXR, MVF)
|
||||||
|
QSD = (JHV, JKP)
|
||||||
|
XSR = (DHN, BQB)
|
||||||
|
SVM = (PKJ, PGR)
|
||||||
|
XXJ = (HGF, MPG)
|
||||||
|
KRB = (QMB, VNX)
|
||||||
|
XJD = (SFQ, SGF)
|
||||||
|
HGN = (KBF, LXS)
|
||||||
|
TKF = (FXP, BKL)
|
||||||
|
KHB = (TPJ, CGD)
|
||||||
|
JFK = (JJX, DMH)
|
||||||
|
PMT = (HGC, HJQ)
|
||||||
|
NBV = (DKQ, JNB)
|
||||||
|
FMN = (BJB, HSV)
|
||||||
|
HPS = (KVJ, KVJ)
|
||||||
|
GLT = (LXL, NFN)
|
||||||
|
PSM = (PMT, CKP)
|
||||||
|
RSM = (JRF, PDB)
|
||||||
|
KVD = (PFK, JDM)
|
||||||
|
CSQ = (HJG, MRB)
|
||||||
|
PKJ = (HDR, TJQ)
|
||||||
|
LRJ = (JSJ, BFS)
|
||||||
|
KFG = (KKT, CQR)
|
||||||
|
TPD = (THT, KBB)
|
||||||
|
KBB = (LRJ, JJQ)
|
||||||
|
XGS = (VXT, TBG)
|
||||||
|
RHX = (XJK, QND)
|
||||||
|
QPL = (DDN, STH)
|
||||||
|
BQB = (XJC, SBH)
|
||||||
|
KCL = (LHS, LTS)
|
||||||
|
XPH = (KXR, BXQ)
|
||||||
|
QNA = (NHL, JRD)
|
||||||
|
KVJ = (KHJ, KHJ)
|
||||||
|
QJP = (RNK, LGT)
|
||||||
|
QFL = (KNL, NQX)
|
||||||
|
KFP = (HLR, LCV)
|
||||||
|
QLV = (PMX, BJK)
|
||||||
|
TLR = (QJG, XKJ)
|
||||||
|
NLQ = (XML, BDS)
|
||||||
|
JXD = (MQD, GBH)
|
||||||
|
LXP = (HRR, XDK)
|
||||||
|
DJS = (GLJ, RNF)
|
||||||
|
FLS = (FMB, MRL)
|
||||||
|
HXL = (BXS, FDM)
|
||||||
|
NQX = (KDN, HQQ)
|
||||||
|
PGR = (TJQ, HDR)
|
||||||
|
CGD = (DGS, VKN)
|
||||||
|
KRQ = (NQF, NGF)
|
||||||
|
JSB = (PNQ, DHV)
|
||||||
|
MBJ = (JCK, QRP)
|
||||||
|
MXQ = (DRG, DSM)
|
||||||
|
HMN = (CBP, CPG)
|
||||||
|
JTL = (RST, SPD)
|
||||||
|
DKG = (GQK, XMQ)
|
||||||
|
NJN = (TVS, VLF)
|
||||||
|
LTS = (JCB, TQF)
|
||||||
|
XNP = (JVF, VKM)
|
||||||
|
RTG = (XXJ, SQT)
|
||||||
|
KNT = (LRB, RRT)
|
||||||
|
SFL = (LXP, CDN)
|
||||||
|
GXD = (MMT, CNX)
|
||||||
|
SMC = (XTL, CHM)
|
||||||
|
JCB = (XCV, NDX)
|
||||||
|
DQT = (RBJ, QGF)
|
||||||
|
TFR = (MKH, NDP)
|
||||||
|
HTP = (CSQ, LPP)
|
||||||
|
JKM = (VVK, SHX)
|
||||||
|
LGG = (RPH, NTV)
|
||||||
|
NSR = (JDM, PFK)
|
||||||
|
QFT = (SNJ, RLV)
|
||||||
|
SQF = (GRG, RSX)
|
||||||
|
SFD = (FFK, RPD)
|
||||||
|
SCD = (SNC, LGQ)
|
||||||
|
CXK = (VDN, SQM)
|
||||||
|
LDP = (NLQ, DGV)
|
||||||
|
CDN = (XDK, HRR)
|
||||||
|
HFC = (QBD, HRF)
|
||||||
|
LGT = (NFX, TJN)
|
||||||
|
VKM = (QJP, HCX)
|
||||||
|
HGF = (SCD, TKT)
|
||||||
|
VGS = (SGB, VXD)
|
||||||
|
MGL = (FTN, LBF)
|
||||||
|
FDM = (DLQ, MLN)
|
||||||
|
FTP = (HJL, JQG)
|
||||||
|
TCN = (MRL, FMB)
|
||||||
|
NGR = (QPL, KMN)
|
||||||
|
NDX = (DMX, LTG)
|
||||||
|
GVJ = (JDG, PCK)
|
||||||
|
MVF = (KVR, TQK)
|
||||||
|
MXJ = (FPQ, VBV)
|
||||||
|
RNH = (DGV, NLQ)
|
||||||
|
RPD = (RFV, PGG)
|
||||||
|
JKG = (NHT, NHT)
|
||||||
|
XNX = (JDB, DQT)
|
||||||
|
DRL = (GCM, DSK)
|
||||||
|
TCF = (TCJ, SVQ)
|
||||||
|
LCL = (NJN, FSN)
|
||||||
|
MJM = (QSM, MXQ)
|
||||||
|
JJK = (BTM, MGR)
|
||||||
|
SPX = (JDG, PCK)
|
||||||
|
QLC = (DHJ, PVG)
|
||||||
|
GPC = (XKC, RTT)
|
||||||
|
TJQ = (XPG, GBN)
|
||||||
|
HSV = (XPR, MBG)
|
||||||
|
JKS = (RPH, NTV)
|
||||||
|
XDP = (KVG, LXQ)
|
||||||
|
JDS = (NBL, BVJ)
|
||||||
|
TQK = (NCR, HTP)
|
||||||
|
BLX = (TFS, LST)
|
||||||
|
KRR = (LXS, KBF)
|
||||||
|
XMQ = (KHB, MMC)
|
||||||
|
KBG = (DBG, MQR)
|
||||||
|
LRR = (KKL, PBT)
|
||||||
|
LFV = (HVQ, MNJ)
|
||||||
|
HGD = (MNL, PDJ)
|
||||||
|
GLB = (NDP, MKH)
|
||||||
|
CMB = (VDG, NCM)
|
||||||
|
TKD = (VCG, BLH)
|
||||||
|
BQJ = (TSB, RNB)
|
||||||
|
QBT = (MKB, RKM)
|
||||||
|
GJQ = (BTG, MMX)
|
||||||
|
SGF = (TKD, SQH)
|
||||||
|
RMD = (JRL, XFT)
|
||||||
|
DDJ = (HRS, XNP)
|
||||||
|
HNP = (KFQ, BQJ)
|
||||||
|
FQF = (MNJ, HVQ)
|
||||||
|
PJT = (FRQ, KFP)
|
||||||
|
RKM = (NGM, HNP)
|
||||||
|
VBV = (LVR, CPP)
|
||||||
|
RBJ = (SKV, MGT)
|
||||||
|
MPG = (SCD, TKT)
|
||||||
|
BHR = (BRM, FJC)
|
||||||
|
VTP = (CKX, PLS)
|
||||||
|
PBQ = (RQC, HGD)
|
||||||
|
RMX = (FTP, NGJ)
|
||||||
|
SMP = (KRR, HGN)
|
||||||
|
KBF = (RMK, BMQ)
|
||||||
|
LSL = (JSB, VPL)
|
||||||
|
KRM = (GDN, XVH)
|
||||||
|
DHJ = (SPV, KCS)
|
||||||
|
XNB = (QFH, PGQ)
|
||||||
|
TGJ = (DBG, MQR)
|
||||||
|
LHQ = (FNX, KFF)
|
||||||
|
GCM = (GFJ, BND)
|
||||||
|
MJQ = (BBK, KVM)
|
||||||
|
NQF = (SSP, VQJ)
|
||||||
|
VPL = (DHV, PNQ)
|
||||||
|
HHX = (SFQ, SGF)
|
||||||
|
FJL = (MGL, XKH)
|
||||||
|
HNH = (FDN, XLN)
|
||||||
|
RLK = (LCL, QVF)
|
||||||
|
SND = (CPG, CBP)
|
||||||
|
CNG = (DJS, HVS)
|
||||||
|
VDN = (QBK, MXJ)
|
||||||
|
BRM = (SMC, GKF)
|
||||||
|
VTK = (HRQ, GMQ)
|
||||||
|
MVX = (KKV, FQP)
|
||||||
|
TDR = (TMG, MDD)
|
||||||
|
SQT = (HGF, MPG)
|
||||||
|
TMN = (HVB, FTF)
|
||||||
|
GNB = (BFT, QXK)
|
||||||
|
QXP = (MJM, CBX)
|
||||||
|
GQK = (MMC, KHB)
|
||||||
|
QGX = (NDB, QSD)
|
||||||
|
TMX = (FNX, KFF)
|
||||||
|
BLD = (NBV, KLQ)
|
||||||
|
RHC = (NXK, PJT)
|
||||||
|
XJC = (QKG, QKG)
|
||||||
|
GBH = (HTG, PRL)
|
||||||
|
TPT = (TRQ, XXT)
|
||||||
|
FTF = (BBB, LLG)
|
||||||
|
QJG = (FKS, PQG)
|
||||||
|
FVR = (LXP, CDN)
|
||||||
|
XCA = (FVR, SFL)
|
||||||
|
VMJ = (KHP, MDV)
|
||||||
|
NTT = (LFP, BLX)
|
||||||
|
DMB = (TCN, FLS)
|
||||||
|
CQR = (LRX, XKS)
|
||||||
|
JFR = (TMN, DCT)
|
||||||
|
TRQ = (DDP, TLR)
|
||||||
|
BXS = (MLN, DLQ)
|
||||||
|
LLG = (LSK, XMD)
|
||||||
|
CBP = (RHF, BRD)
|
||||||
|
PFT = (SMP, BLZ)
|
||||||
|
TNS = (TMV, TJF)
|
||||||
|
DHV = (VFX, VVR)
|
||||||
|
PPL = (CKP, PMT)
|
||||||
|
QND = (DGQ, TRS)
|
||||||
|
VBL = (MGG, NGR)
|
||||||
|
FHM = (BPL, LQC)
|
||||||
|
KKT = (LRX, XKS)
|
||||||
|
LHS = (JCB, TQF)
|
||||||
|
LXL = (LJH, LJH)
|
||||||
|
BLT = (GGH, FJL)
|
||||||
|
JQG = (XCT, FRS)
|
||||||
|
KCS = (JNR, FRK)
|
||||||
|
SKX = (JKG, JKG)
|
||||||
|
VKN = (NMS, QBT)
|
||||||
|
DSL = (FMN, PJN)
|
||||||
|
TPJ = (VKN, DGS)
|
||||||
|
CKR = (JDB, DQT)
|
||||||
|
LKL = (QLQ, NXD)
|
||||||
|
SMM = (LMB, MCH)
|
||||||
|
FSN = (TVS, VLF)
|
||||||
|
KMS = (XNP, HRS)
|
||||||
|
MTX = (LGG, JKS)
|
||||||
|
CHM = (CTL, MPK)
|
||||||
|
HRQ = (QHQ, CTG)
|
||||||
|
QCG = (JMG, DPL)
|
||||||
|
TQH = (QXK, BFT)
|
||||||
|
JXC = (QBD, HRF)
|
||||||
|
JVF = (QJP, HCX)
|
||||||
|
TJF = (KCL, XGV)
|
||||||
|
XDS = (QQB, QQB)
|
||||||
|
KJG = (QND, XJK)
|
||||||
|
CTG = (FXN, PNP)
|
||||||
|
BBB = (LSK, XMD)
|
||||||
|
DMH = (NHF, JKM)
|
||||||
|
BGX = (LSS, MPM)
|
||||||
|
RHF = (VMF, NTR)
|
||||||
|
KHJ = (JPD, MVX)
|
||||||
|
SCS = (FNJ, RSM)
|
||||||
|
VFX = (LXV, XPP)
|
||||||
|
XLQ = (RMH, SFD)
|
||||||
|
HDB = (HVR, PBQ)
|
||||||
|
PTG = (SKX, GPH)
|
||||||
|
NTR = (LDG, LKV)
|
||||||
|
KKL = (NVG, DVP)
|
||||||
|
XKH = (FTN, LBF)
|
||||||
|
BDS = (TPD, VKQ)
|
||||||
|
QKG = (FBR, FBR)
|
||||||
|
LDS = (HQR, BJC)
|
||||||
|
KKV = (MPP, FKL)
|
||||||
|
JRQ = (TRQ, XXT)
|
||||||
|
MNP = (GQP, GQD)
|
||||||
|
BTM = (GJQ, TRM)
|
||||||
|
RPH = (GKN, SCM)
|
||||||
|
TQD = (RCC, NRG)
|
||||||
|
FQP = (FKL, MPP)
|
||||||
|
VFV = (QQB, HPB)
|
||||||
|
XSL = (CBX, MJM)
|
||||||
|
GKN = (DPB, PMM)
|
||||||
|
PBK = (QBH, GQL)
|
||||||
|
HPB = (PCB, RRM)
|
||||||
|
MCH = (RTG, XJN)
|
||||||
|
KSL = (FVL, NTT)
|
||||||
|
TCJ = (PXP, XQM)
|
||||||
|
RNF = (JTL, QQV)
|
||||||
|
BXA = (NFG, CQH)
|
||||||
|
KVK = (PRP, HLP)
|
||||||
|
NGF = (SSP, VQJ)
|
||||||
|
PJN = (BJB, HSV)
|
||||||
|
SFJ = (BJK, PMX)
|
||||||
|
CPL = (LDJ, RHB)
|
||||||
|
MKP = (TRJ, BFM)
|
||||||
|
RPT = (GRG, RSX)
|
||||||
|
PRQ = (XPH, DLP)
|
||||||
|
DSR = (KNT, JBB)
|
||||||
|
VPB = (RMH, SFD)
|
||||||
|
QLQ = (MKJ, DKP)
|
||||||
|
FNJ = (PDB, JRF)
|
||||||
|
SBH = (QKG, JVC)
|
||||||
|
PDC = (LDS, DTB)
|
||||||
|
QFP = (MJQ, HFK)
|
||||||
|
CTL = (RDD, KVK)
|
||||||
|
LXS = (BMQ, RMK)
|
||||||
|
VKF = (QBH, GQL)
|
||||||
|
HJL = (XCT, FRS)
|
||||||
|
KTK = (LDF, HPD)
|
||||||
|
RMK = (HFC, JXC)
|
||||||
|
MGT = (JFR, HXB)
|
||||||
|
XLN = (QFL, DXN)
|
||||||
|
FRQ = (HLR, LCV)
|
||||||
|
FMB = (KFK, LJK)
|
||||||
|
NFX = (KTL, QLF)
|
||||||
|
LMB = (RTG, XJN)
|
||||||
|
JDG = (TGJ, KBG)
|
||||||
|
MNJ = (GVJ, SPX)
|
||||||
|
VMF = (LDG, LKV)
|
||||||
|
SRN = (GCM, DSK)
|
||||||
|
JCC = (SVQ, TCJ)
|
||||||
|
NGJ = (HJL, JQG)
|
||||||
|
XCT = (SCJ, FDV)
|
||||||
|
FFK = (RFV, PGG)
|
||||||
|
NFN = (LJH, RMV)
|
||||||
|
GHV = (GQK, XMQ)
|
||||||
|
HFK = (KVM, BBK)
|
||||||
|
MNL = (GLB, TFR)
|
||||||
|
BPL = (LHQ, TMX)
|
||||||
|
LJH = (NCJ, NCJ)
|
||||||
|
FDV = (CQF, KRQ)
|
||||||
|
PBZ = (SFL, FVR)
|
||||||
|
MSB = (PPK, TLM)
|
||||||
|
GGH = (XKH, MGL)
|
||||||
|
MPK = (KVK, RDD)
|
||||||
|
VVR = (XPP, LXV)
|
||||||
|
NMS = (MKB, RKM)
|
||||||
|
NXK = (FRQ, KFP)
|
||||||
|
BSQ = (JCS, MBJ)
|
||||||
|
XMX = (DSL, CTX)
|
||||||
|
NHF = (VVK, SHX)
|
||||||
|
MMC = (CGD, TPJ)
|
||||||
|
GQP = (TLQ, XXG)
|
||||||
|
TRH = (FJC, BRM)
|
||||||
|
RLV = (NSR, KVD)
|
||||||
|
DKN = (PQH, SMM)
|
||||||
|
MSX = (LCL, QVF)
|
||||||
|
SKN = (KKR, RVF)
|
||||||
|
LSK = (PNV, MRS)
|
||||||
|
RDD = (PRP, HLP)
|
||||||
|
DRD = (JBQ, BLT)
|
||||||
|
GBS = (XDP, LJQ)
|
||||||
|
TFQ = (BLD, TNX)
|
||||||
|
QGS = (BNH, HJR)
|
||||||
|
LJK = (CVF, FMQ)
|
||||||
|
NCR = (CSQ, LPP)
|
||||||
|
HJQ = (SVM, TPM)
|
||||||
|
JCS = (QRP, JCK)
|
||||||
|
KTV = (VDG, NCM)
|
||||||
|
MMX = (GDG, JDS)
|
||||||
|
HVS = (GLJ, RNF)
|
||||||
|
XMD = (PNV, MRS)
|
||||||
|
VVK = (XDS, VFV)
|
||||||
|
FBR = (SMP, SMP)
|
||||||
|
XKJ = (PQG, FKS)
|
||||||
|
AAA = (LQS, DMB)
|
||||||
|
LCV = (FMM, QLH)
|
||||||
|
PPJ = (HVS, DJS)
|
||||||
|
DGS = (QBT, NMS)
|
||||||
|
PFG = (LDF, HPD)
|
||||||
|
HVR = (RQC, HGD)
|
||||||
|
QXK = (BMB, XQP)
|
||||||
|
BTN = (GHD, JXP)
|
||||||
|
DPR = (TRH, BHR)
|
||||||
|
KVG = (GNB, TQH)
|
||||||
|
GFJ = (KFG, SQB)
|
||||||
|
JCK = (SCB, HCM)
|
||||||
|
QSM = (DRG, DSM)
|
||||||
|
XPR = (XPV, MSB)
|
||||||
|
RNB = (TKX, MKP)
|
||||||
|
RHB = (TFQ, CJK)
|
||||||
|
PGQ = (VRF, MTX)
|
||||||
|
CDH = (GNT, NKP)
|
||||||
|
BVJ = (PRQ, GFQ)
|
||||||
|
LTG = (QGX, LVL)
|
||||||
|
XJR = (QXP, XSL)
|
||||||
|
JCV = (SPH, DDH)
|
||||||
|
GDN = (PVP, GBJ)
|
||||||
|
HNX = (KNT, JBB)
|
||||||
|
SFN = (MMT, CNX)
|
||||||
|
RGL = (FTP, NGJ)
|
||||||
|
VCA = (KRR, HGN)
|
||||||
|
ZZZ = (DMB, LQS)
|
||||||
|
GMK = (QLQ, NXD)
|
||||||
|
LKV = (VMG, SDQ)
|
||||||
|
PMZ = (CQH, NFG)
|
||||||
|
KBJ = (GHD, JXP)
|
||||||
|
PNQ = (VFX, VVR)
|
||||||
|
TPQ = (GNT, NKP)
|
||||||
|
SPD = (MHQ, BSQ)
|
||||||
|
XCV = (DMX, LTG)
|
||||||
|
BVB = (XKC, RTT)
|
||||||
|
BQL = (RGX, GRH)
|
||||||
|
JTS = (RSM, FNJ)
|
||||||
|
SPP = (BLT, JBQ)
|
||||||
|
VXT = (CPL, JVR)
|
||||||
|
MTL = (JHN, TQD)
|
||||||
|
KMN = (DDN, STH)
|
||||||
|
RQC = (PDJ, MNL)
|
||||||
|
FTM = (KHJ, BJZ)
|
||||||
|
RXT = (FVR, SFL)
|
||||||
|
QXR = (KVR, TQK)
|
||||||
|
HJR = (QJH, XJR)
|
||||||
|
BFS = (GQN, DKN)
|
||||||
|
TKX = (BFM, TRJ)
|
||||||
|
DGV = (BDS, XML)
|
||||||
|
DRG = (FRX, DMN)
|
||||||
|
VNX = (CNG, PPJ)
|
||||||
|
CSC = (MDV, KHP)
|
||||||
|
KMQ = (PJT, NXK)
|
||||||
|
DVP = (SCS, JTS)
|
||||||
|
LDF = (XMX, GKG)
|
||||||
|
QFH = (MTX, VRF)
|
||||||
|
RTT = (PQS, GBD)
|
||||||
|
KXR = (BDH, BDH)
|
||||||
|
SMD = (GHT, GGM)
|
||||||
|
TMB = (DMH, JJX)
|
||||||
|
KHP = (FHM, MGD)
|
||||||
|
TLF = (QMB, VNX)
|
||||||
|
FRK = (VTP, XSF)
|
||||||
|
KTL = (CHX, XSR)
|
||||||
|
GRH = (RLK, MSX)
|
||||||
|
QMD = (NHV, HXL)
|
||||||
|
KDV = (VRX, NXX)
|
||||||
|
LGQ = (VKF, PBK)
|
||||||
|
FVL = (BLX, LFP)
|
||||||
|
MMT = (NQQ, KSL)
|
||||||
|
CKP = (HJQ, HGC)
|
||||||
|
STH = (BKP, GLT)
|
||||||
|
QBK = (FPQ, VBV)
|
||||||
|
CTX = (FMN, PJN)
|
||||||
|
HHQ = (GBH, MQD)
|
||||||
|
JHV = (PXG, JPL)
|
||||||
|
FJC = (GKF, SMC)
|
||||||
|
TMG = (PFG, KTK)
|
||||||
|
XXG = (CRC, FGM)
|
||||||
|
BDH = (PBB, PBB)
|
||||||
|
FPQ = (CPP, LVR)
|
||||||
|
BKL = (BCJ, TDR)
|
||||||
|
GKG = (DSL, CTX)
|
||||||
|
LVL = (NDB, QSD)
|
||||||
|
BNH = (QJH, XJR)
|
||||||
|
TBG = (JVR, CPL)
|
||||||
|
CQH = (HNX, DSR)
|
||||||
|
VXD = (TKF, PMD)
|
||||||
|
MGR = (TRM, GJQ)
|
||||||
|
PDJ = (GLB, TFR)
|
||||||
|
HXB = (DCT, TMN)
|
||||||
|
XSM = (SQM, VDN)
|
||||||
|
HDR = (XPG, GBN)
|
||||||
|
GFQ = (XPH, DLP)
|
||||||
|
XKC = (PQS, GBD)
|
||||||
|
SBN = (TPQ, CDH)
|
||||||
|
RSX = (LFV, FQF)
|
||||||
|
PVP = (XNB, MLT)
|
||||||
|
LDG = (VMG, SDQ)
|
||||||
|
LXV = (LKL, GMK)
|
||||||
|
TKT = (SNC, LGQ)
|
||||||
|
SHX = (XDS, VFV)
|
||||||
|
GRG = (FQF, LFV)
|
||||||
|
QQV = (RST, SPD)
|
||||||
|
CNX = (NQQ, KSL)
|
||||||
|
DMX = (LVL, QGX)
|
||||||
|
CRC = (TVK, TNS)
|
||||||
|
JXP = (FFR, NCG)
|
||||||
|
BJC = (RGL, RMX)
|
||||||
|
BFT = (XQP, BMB)
|
||||||
|
SKV = (JFR, HXB)
|
||||||
|
JDB = (QGF, RBJ)
|
||||||
|
XRK = (NGR, MGG)
|
||||||
|
FXN = (JCV, VSK)
|
||||||
|
JJQ = (JSJ, BFS)
|
||||||
|
DDN = (BKP, GLT)
|
||||||
|
QBH = (XNX, CKR)
|
||||||
|
MLT = (PGQ, QFH)
|
||||||
|
SNC = (VKF, PBK)
|
||||||
|
FTN = (HDB, PQP)
|
||||||
|
DPL = (LSL, FXH)
|
||||||
|
TFS = (DPR, PVJ)
|
||||||
|
HVQ = (SPX, GVJ)
|
||||||
|
JJX = (NHF, JKM)
|
||||||
|
KVR = (HTP, NCR)
|
||||||
|
MQR = (SND, HMN)
|
||||||
|
MDD = (PFG, KTK)
|
||||||
|
PCB = (RXT, RXT)
|
||||||
|
NLT = (GBS, JLR)
|
||||||
|
GBD = (SMD, PJR)
|
||||||
|
NHV = (BXS, FDM)
|
||||||
|
GHT = (KLV, PTG)
|
||||||
|
SDQ = (LSX, FPH)
|
||||||
|
TRJ = (QXR, MVF)
|
||||||
|
HGC = (TPM, SVM)
|
||||||
|
MHQ = (JCS, MBJ)
|
||||||
|
CKX = (HPS, HPS)
|
||||||
|
SQM = (MXJ, QBK)
|
||||||
|
PQG = (PPL, PSM)
|
||||||
|
JRL = (CRL, XGS)
|
||||||
|
NRG = (DRD, SPP)
|
||||||
|
GHD = (NCG, FFR)
|
||||||
|
LBF = (PQP, HDB)
|
||||||
|
MKK = (KNN, PKP)
|
||||||
|
CPG = (RHF, BRD)
|
||||||
|
SQB = (KKT, CQR)
|
||||||
|
VKQ = (THT, KBB)
|
||||||
|
KFK = (FMQ, CVF)
|
||||||
|
PJR = (GHT, GGM)
|
||||||
|
FXH = (JSB, VPL)
|
||||||
|
JPQ = (PVG, DHJ)
|
||||||
|
PDB = (SKN, RMF)
|
||||||
|
JKX = (VXD, SGB)
|
||||||
|
DTB = (HQR, BJC)
|
||||||
|
VCG = (QLV, SFJ)
|
||||||
|
KVM = (SBN, VVF)
|
||||||
|
QXS = (TCF, JCC)
|
||||||
|
CJK = (BLD, TNX)
|
||||||
|
PKP = (VPB, XLQ)
|
||||||
|
JMG = (LSL, FXH)
|
||||||
|
FRX = (JRQ, TPT)
|
||||||
|
KFF = (FKG, NLT)
|
||||||
|
DPB = (RHC, KMQ)
|
||||||
|
SCB = (KJG, RHX)
|
||||||
|
DHN = (XJC, SBH)
|
||||||
|
QLH = (GPC, BVB)
|
||||||
|
PMX = (DRL, SRN)
|
||||||
|
XMK = (HFK, MJQ)
|
||||||
|
NDB = (JHV, JKP)
|
||||||
|
LQS = (TCN, FLS)
|
||||||
|
PGG = (NJD, QCG)
|
||||||
3
src/bin/sources/part09.sample
Normal file
3
src/bin/sources/part09.sample
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
0 3 6 9 12 15
|
||||||
|
1 3 6 10 15 21
|
||||||
|
10 13 16 21 30 45
|
||||||
200
src/bin/sources/part09.txt
Normal file
200
src/bin/sources/part09.txt
Normal file
@@ -0,0 +1,200 @@
|
|||||||
|
13 14 13 10 5 -2 -11 -22 -35 -50 -67 -86 -107 -130 -155 -182 -211 -242 -275 -310 -347
|
||||||
|
9 19 37 66 111 177 266 388 625 1318 3490 9701 25720 63813 149272 333318 718069 1503353 3071375 6134368 11983281
|
||||||
|
17 46 98 176 281 429 679 1172 2193 4286 8484 16784 33150 65659 131075 264391 538087 1099560 2241224 4527470 9018149
|
||||||
|
7 8 7 15 65 227 628 1477 3095 5950 10697 18223 29697 46625 70910 104917 151543 214292 297355 405695 545137
|
||||||
|
16 20 32 75 200 503 1144 2368 4528 8110 13760 22313 34824 52601 77240 110662 155152 213400 288544 384215 504584
|
||||||
|
12 19 22 16 -5 -46 -106 -162 -130 213 1366 4324 10909 24244 49406 94298 170784 296135 494838 800824 1260175
|
||||||
|
2 6 26 72 158 308 570 1038 1882 3389 6024 10529 18090 30617 51200 84825 139458 227632 368702 591966 940886
|
||||||
|
22 46 83 136 215 355 655 1362 3045 6934 15547 33816 71102 144866 287545 559746 1075870 2053792 3909961 7437838 14134735
|
||||||
|
11 28 56 110 211 392 719 1340 2589 5207 10809 22836 48395 101619 209484 421412 824479 1566646 2891150 5186042 9053851
|
||||||
|
18 41 80 155 308 608 1164 2162 3949 7210 13337 25194 48675 95789 190569 380005 753596 1477199 2849870 5396645 10016062
|
||||||
|
27 45 78 149 302 624 1293 2676 5512 11226 22431 43686 82589 151295 268560 462423 773649 1260067 2001948 3108579 4726200
|
||||||
|
-4 -8 -13 0 71 277 765 1806 3871 7731 14593 26319 45879 78460 134275 235391 431268 831772 1672945 3440668 7091533
|
||||||
|
3 16 32 55 106 241 575 1307 2748 5384 10073 18593 34941 68045 136906 279649 568545 1133784 2199646 4137747 7543244
|
||||||
|
12 37 77 132 202 287 387 502 632 777 937 1112 1302 1507 1727 1962 2212 2477 2757 3052 3362
|
||||||
|
21 25 24 23 40 123 392 1125 2909 6873 15012 30615 58861 107802 190292 328053 560129 959637 1665192 2936927 5251986
|
||||||
|
-3 4 31 85 169 285 443 684 1131 2086 4193 8687 17747 34967 65953 119046 206161 343720 553643 864345 1311669
|
||||||
|
12 39 94 190 340 557 854 1244 1740 2355 3102 3994 5044 6265 7670 9272 11084 13119 15390 17910 20692
|
||||||
|
8 3 6 32 108 279 614 1212 2208 3779 6150 9600 14468 21159 30150 41996 57336 76899 101510 132096 169692
|
||||||
|
19 34 45 58 97 211 481 1027 2015 3664 6253 10128 15709 23497 34081 48145 66475 89966 119629 156598 202137
|
||||||
|
19 32 43 45 36 32 85 301 856 2020 4216 8156 15115 27474 49920 92445 178177 363369 786019 1778286 4114938
|
||||||
|
21 23 28 49 115 297 747 1743 3732 7381 13707 24503 43577 79880 154567 315616 666091 1415815 2971538 6088153 12113739
|
||||||
|
12 25 38 55 85 142 245 418 690 1095 1672 2465 3523 4900 6655 8852 11560 14853 18810 23515 29057
|
||||||
|
2 1 -3 -10 -20 -33 -49 -68 -90 -115 -143 -174 -208 -245 -285 -328 -374 -423 -475 -530 -588
|
||||||
|
15 31 53 83 130 228 479 1144 2816 6725 15248 32734 66829 130665 246726 454311 825117 1497239 2749951 5165469 9968628
|
||||||
|
13 22 41 94 227 530 1182 2527 5189 10234 19387 35312 61963 105014 172376 274809 426637 646574 958669 1393378 1988771
|
||||||
|
10 27 61 128 265 541 1078 2086 3929 7275 13453 25271 48812 97287 199231 415823 876990 1854968 3909809 8167901 16837713
|
||||||
|
20 41 69 115 210 426 919 2014 4376 9357 19685 40775 83102 166290 325847 623822 1165084 2121433 3766357 6523955 11036362
|
||||||
|
20 41 79 145 260 469 859 1576 2833 4898 8048 12472 18103 24356 29746 31357 24130 -65 -53611 -154621 -328754
|
||||||
|
12 15 14 14 20 31 44 93 361 1429 4792 13917 36403 88335 202900 447124 953909 1982790 4034693 8068571 15910501
|
||||||
|
7 1 -10 -26 -47 -73 -104 -140 -181 -227 -278 -334 -395 -461 -532 -608 -689 -775 -866 -962 -1063
|
||||||
|
8 17 28 41 56 73 92 113 136 161 188 217 248 281 316 353 392 433 476 521 568
|
||||||
|
-7 -7 -3 20 91 253 563 1092 1925 3161 4913 7308 10487 14605 19831 26348 34353 44057 55685 69476 85683
|
||||||
|
19 41 75 131 239 467 955 1978 4070 8281 16709 33558 67130 133373 261887 505645 956125 1766081 3182815 5595557 9601425
|
||||||
|
19 38 76 145 252 412 679 1198 2286 4562 9162 18098 34869 65554 120910 220664 402655 742670 1397682 2699767 5358228
|
||||||
|
-8 -12 -16 -20 -24 -28 -32 -36 -40 -44 -48 -52 -56 -60 -64 -68 -72 -76 -80 -84 -88
|
||||||
|
14 19 25 47 123 330 805 1770 3568 6733 12138 21281 36762 62959 106853 179040 295716 485185 810417 1439321 2840823
|
||||||
|
-5 -10 -5 27 113 307 712 1508 3008 5813 11227 22245 45678 96398 205401 434621 903560 1836489 3645526 7077172 13474410
|
||||||
|
6 12 37 100 225 454 877 1695 3352 6804 14053 29199 60520 124585 254292 514213 1028998 2034192 3964089 7598714 14302319
|
||||||
|
9 -1 -3 16 71 191 448 1014 2276 5083 11286 24888 54380 117243 248195 513614 1035739 2031815 3875387 7189552 12985245
|
||||||
|
13 9 3 11 67 227 573 1217 2305 4021 6591 10287 15431 22399 31625 43605 58901 78145 102043 131379 167019
|
||||||
|
3 13 41 93 185 367 766 1656 3563 7413 14731 27899 50481 87623 146536 237070 372387 569741 851373 1245529 1787609
|
||||||
|
26 35 37 26 -2 -45 -94 -139 -186 -289 -601 -1448 -3430 -7553 -15396 -29317 -52702 -90261 -148375 -235498 -362618
|
||||||
|
24 35 46 57 68 79 90 101 112 123 134 145 156 167 178 189 200 211 222 233 244
|
||||||
|
-1 -3 7 45 137 336 752 1595 3231 6251 11553 20437 34713 56822 89970 138275 206927 302361 432443 606669 836377
|
||||||
|
5 14 43 100 196 351 596 980 1613 2813 5492 12035 28135 66420 153386 342383 737601 1537808 3114941 6152870 11887554
|
||||||
|
-4 6 31 79 177 390 850 1806 3720 7456 14647 28396 54601 104440 198986 377657 713404 1339426 2495079 4602917 8394985
|
||||||
|
8 14 26 47 83 143 236 375 620 1224 2998 8105 21675 54992 131693 299673 653536 1375886 2810998 5591955 10852643
|
||||||
|
-6 -6 -6 -13 -32 -48 15 366 1463 4197 10185 22236 45083 86509 159036 282393 487032 819020 1346700 2169585 3430026
|
||||||
|
16 35 67 113 174 251 345 457 588 739 911 1105 1322 1563 1829 2121 2440 2787 3163 3569 4006
|
||||||
|
18 25 35 61 126 269 567 1182 2449 5043 10322 21086 43303 89970 189428 402531 856796 1812337 3786333 7783995 15721100
|
||||||
|
1 0 -3 -8 -15 -24 -35 -48 -63 -80 -99 -120 -143 -168 -195 -224 -255 -288 -323 -360 -399
|
||||||
|
22 29 36 43 50 57 64 71 78 85 92 99 106 113 120 127 134 141 148 155 162
|
||||||
|
12 25 47 93 190 380 730 1359 2492 4551 8293 15005 26766 46786 79832 132751 215100 339893 524475 791533 1170254
|
||||||
|
3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57 60 63
|
||||||
|
8 22 44 75 116 168 232 309 400 506 628 767 924 1100 1296 1513 1752 2014 2300 2611 2948
|
||||||
|
7 18 45 93 171 292 473 735 1103 1606 2277 3153 4275 5688 7441 9587 12183 15290 18973 23301 28347
|
||||||
|
16 25 41 71 122 201 315 471 676 937 1261 1655 2126 2681 3327 4071 4920 5881 6961 8167 9506
|
||||||
|
11 8 7 14 34 73 153 358 946 2603 6990 17860 43245 99637 219904 468209 967955 1953669 3866490 7528970 14465012
|
||||||
|
5 7 7 9 24 70 172 362 679 1169 1885 2887 4242 6024 8314 11200 14777 19147 24419 30709 38140
|
||||||
|
20 41 88 184 360 655 1116 1798 2764 4085 5840 8116 11008 14619 19060 24450 30916 38593 47624 58160 70360
|
||||||
|
5 1 -3 -7 -11 -15 -19 -23 -27 -31 -35 -39 -43 -47 -51 -55 -59 -63 -67 -71 -75
|
||||||
|
14 28 49 84 144 244 403 644 994 1484 2149 3028 4164 5604 7399 9604 12278 15484 19289 23764 28984
|
||||||
|
22 39 76 159 327 632 1139 1926 3084 4717 6942 9889 13701 18534 24557 31952 40914 51651 64384 79347 96787
|
||||||
|
-2 2 14 48 128 302 671 1448 3080 6489 13516 27685 55442 108067 204505 375415 668794 1157596 1949834 3201726 5134524
|
||||||
|
8 26 74 174 355 653 1111 1779 2714 3980 5648 7796 10509 13879 18005 22993 28956 36014 44294 53930 65063
|
||||||
|
23 33 50 91 180 356 702 1409 2889 5944 11981 23232 42888 74981 123741 192008 278083 370147 437052 413881 180172
|
||||||
|
3 21 50 101 197 368 646 1058 1610 2250 2793 2786 1286 -3481 -14617 -37247 -79459 -153541 -277572 -477429 -789277
|
||||||
|
11 24 52 113 232 438 776 1348 2397 4448 8520 16423 31154 57406 102204 175682 292015 470520 736940 1124925 1677724
|
||||||
|
-10 -6 14 71 204 480 1012 2001 3833 7274 13814 26222 49416 91898 168406 305363 552580 1008090 1868702 3527701 6753848
|
||||||
|
20 34 64 128 254 493 939 1767 3313 6233 11791 22339 42065 78098 142072 252264 436434 735508 1208258 1937146 3035512
|
||||||
|
2 10 22 45 90 169 301 550 1131 2634 6438 15432 35251 76403 157947 313829 603648 1130570 2070406 3717599 6556112
|
||||||
|
3 14 47 113 223 383 590 829 1076 1332 1752 2991 6966 18339 47197 113725 256297 545618 1109757 2178733 4163617
|
||||||
|
9 24 49 94 186 381 792 1643 3363 6738 13143 24880 45652 81207 140190 235245 384413 612876 955101 1457442 2181262
|
||||||
|
14 23 35 58 105 197 366 658 1136 1883 3005 4634 6931 10089 14336 19938 27202 36479 48167 62714 80621
|
||||||
|
27 44 59 64 57 56 117 356 975 2292 4775 9080 16093 26976 43217 66684 99683 145020 206067 286832 392033
|
||||||
|
17 25 33 41 49 57 65 73 81 89 97 105 113 121 129 137 145 153 161 169 177
|
||||||
|
17 32 70 139 249 433 788 1552 3245 6924 14644 30289 61045 119922 229851 429893 783891 1391526 2401936 4033413 6616003
|
||||||
|
16 27 55 113 230 463 916 1774 3367 6293 11651 21464 39397 71870 129603 229529 397057 669452 1104102 1803952 2993211
|
||||||
|
11 34 80 162 301 533 917 1545 2563 4231 7097 12477 23695 49066 108610 248366 569762 1288551 2852013 6171819 13087348
|
||||||
|
19 26 30 31 29 24 16 5 -9 -26 -46 -69 -95 -124 -156 -191 -229 -270 -314 -361 -411
|
||||||
|
1 20 64 146 293 561 1063 2033 3966 7896 15901 31956 63292 122461 230354 420471 744799 1281716 2146406 3504342 5588471
|
||||||
|
-4 0 10 41 129 333 731 1413 2475 4021 6200 9375 14701 25775 52754 121612 293282 700634 1615986 3568633 7541309
|
||||||
|
14 29 57 101 164 254 391 628 1118 2290 5238 12478 29293 65976 141417 288696 563690 1058247 1920315 3384655 5819558
|
||||||
|
12 22 42 72 112 162 222 292 372 462 562 672 792 922 1062 1212 1372 1542 1722 1912 2112
|
||||||
|
18 38 82 159 280 460 722 1114 1749 2874 4983 9051 17156 34208 72464 162434 377514 886708 2062686 4695469 10402310
|
||||||
|
3 5 19 57 145 338 735 1494 2847 5115 8723 14215 22269 33712 49535 70908 99195 135969 183027 242405 316393
|
||||||
|
20 29 38 60 132 334 816 1836 3813 7404 13640 24238 42403 74835 136386 260038 516810 1053119 2157346 4373288 8686278
|
||||||
|
16 42 90 173 313 554 995 1863 3648 7320 14640 28559 53665 96580 166117 272869 427704 638366 903014 1199049 1464961
|
||||||
|
15 24 33 42 51 60 69 78 87 96 105 114 123 132 141 150 159 168 177 186 195
|
||||||
|
8 31 73 153 298 550 988 1770 3200 5825 10567 18895 33042 56272 93202 150184 235752 361139 540869 793429 1142026
|
||||||
|
9 30 70 140 259 471 876 1691 3385 6979 14670 31027 65128 134201 269698 527469 1005174 1872859 3427543 6190589 11077866
|
||||||
|
-6 0 11 33 89 233 568 1274 2661 5271 10062 18716 34122 61094 107393 185131 312644 516930 836757 1326555 2061215
|
||||||
|
6 22 41 56 57 40 22 53 226 709 1860 4547 10912 26080 61944 145656 338842 780748 1782863 4029602 8988143
|
||||||
|
-9 -10 -4 15 67 204 545 1347 3146 7020 15048 31086 62104 120613 229283 429883 800389 1486794 2760144 5114905 9431989
|
||||||
|
7 26 59 115 203 330 507 765 1178 1885 3098 5078 8056 12071 16692 20586 20889 12332 -13931 -71851 -182431
|
||||||
|
25 50 84 133 218 381 694 1277 2328 4164 7285 12537 21617 38505 73019 148687 318659 695614 1504754 3173253 6475212
|
||||||
|
4 0 -13 -29 -17 103 501 1516 3817 8718 18751 38637 76837 147924 276125 500603 883477 1522303 2569754 4264250 6975394
|
||||||
|
27 47 81 153 311 639 1273 2437 4536 8382 15705 30247 60020 121869 250601 517175 1064855 2180784 4436721 8962954 17974199
|
||||||
|
14 13 9 18 75 240 621 1432 3106 6494 13211 26249 51075 97579 183443 339777 620222 1115163 1973237 3432972 5868163
|
||||||
|
23 50 93 161 277 492 914 1774 3579 7453 15857 34031 72745 153319 316418 636898 1248031 2379836 4418061 7992677 14107645
|
||||||
|
11 10 21 56 127 246 425 676 1011 1442 1981 2640 3431 4366 5457 6716 8155 9786 11621 13672 15951
|
||||||
|
26 45 69 98 132 171 215 264 318 377 441 510 584 663 747 836 930 1029 1133 1242 1356
|
||||||
|
15 41 78 131 225 419 830 1676 3361 6664 13177 26300 53407 110349 230417 481486 997646 2035714 4073411 7975968 15273628
|
||||||
|
-8 -8 -6 -4 2 30 119 334 774 1597 3082 5745 10513 18946 33506 57948 98120 163906 273862 465454 815928
|
||||||
|
8 17 26 35 44 53 62 71 80 89 98 107 116 125 134 143 152 161 170 179 188
|
||||||
|
-1 5 16 35 77 177 397 823 1538 2555 3704 4510 4223 2477 1816 15090 84677 329015 1049600 2966735 7719325
|
||||||
|
4 15 32 59 108 199 360 627 1044 1663 2544 3755 5372 7479 10168 13539 17700 22767 28864 36123 44684
|
||||||
|
-5 0 16 60 178 464 1087 2343 4767 9362 18027 34292 64492 119530 217386 386519 670275 1132348 1863234 2987460 4671150
|
||||||
|
8 13 29 70 160 330 615 1051 1672 2507 3577 4892 6448 8224 10179 12249 14344 16345 18101 19426 20096
|
||||||
|
2 7 12 14 26 92 302 807 1834 3701 6832 11772 19202 29954 45026 65597 93042 128947 175124 233626 306762
|
||||||
|
13 22 55 135 310 683 1460 3025 6057 11710 21883 39613 69630 119119 198740 323963 516781 807870 1239271 1867675 2768398
|
||||||
|
-9 -4 16 59 142 297 585 1133 2218 4431 8962 18062 35782 69203 130622 241651 441077 799858 1449144 2631225 4789554
|
||||||
|
17 30 53 86 129 182 245 318 401 494 597 710 833 966 1109 1262 1425 1598 1781 1974 2177
|
||||||
|
16 31 57 92 134 181 231 282 332 379 421 456 482 497 499 486 456 407 337 244 126
|
||||||
|
15 23 45 95 192 361 640 1097 1863 3193 5577 9934 17943 32647 59747 110768 211035 418963 869777 1868209 4073414
|
||||||
|
15 41 89 166 277 425 611 834 1091 1377 1685 2006 2329 2641 2927 3170 3351 3449 3441 3302 3005
|
||||||
|
13 21 40 89 207 459 933 1736 3024 5143 9015 16975 34352 72189 151614 310506 613247 1164513 2128234 3753045 6405757
|
||||||
|
16 23 38 68 130 264 551 1136 2256 4273 7712 13304 22034 35194 54441 81860 120032 172107 241882 333884 453458
|
||||||
|
12 18 24 22 14 35 199 777 2326 5912 13508 28700 57900 112345 211255 386631 690296 1203918 2052904 3425218 5596354
|
||||||
|
-8 -13 -18 -23 -28 -33 -38 -43 -48 -53 -58 -63 -68 -73 -78 -83 -88 -93 -98 -103 -108
|
||||||
|
5 2 -3 -1 29 127 377 956 2206 4728 9528 18351 34588 65629 128400 261301 548362 1166341 2475406 5194738 10747314
|
||||||
|
-9 -17 -13 18 105 315 784 1765 3731 7612 15304 30678 61474 122778 243443 478215 931187 1801827 3475476 6699809 12924125
|
||||||
|
16 30 44 58 72 86 100 114 128 142 156 170 184 198 212 226 240 254 268 282 296
|
||||||
|
-4 8 33 73 136 237 395 634 1019 1796 3769 9158 23371 58431 139277 314867 677022 1391344 2746409 5229879 9643306
|
||||||
|
11 19 22 16 -7 -59 -159 -336 -612 -921 -880 748 7202 26037 73573 183088 419305 903051 1851778 3644040 6919135
|
||||||
|
3 7 23 51 87 122 139 108 -21 -327 -929 -1999 -3777 -6588 -10861 -17150 -26157 -38757 -56025 -79265 -110041
|
||||||
|
26 47 76 110 141 168 237 537 1594 4619 12080 28582 62153 126048 241197 439437 767682 1293199 2110172 3347750 5179789
|
||||||
|
1 -3 5 43 135 311 607 1065 1733 2665 3921 5567 7675 10323 13595 17581 22377 28085 34813 42675 51791
|
||||||
|
26 36 51 78 121 181 256 341 428 506 561 576 531 403 166 -209 -754 -1504 -2497 -3774 -5379
|
||||||
|
24 49 83 120 161 228 376 695 1305 2378 4283 8064 16660 37614 88602 208180 476214 1052579 2250883 4679724 9513235
|
||||||
|
6 11 34 83 159 267 436 749 1395 2780 5782 12315 26488 56816 120170 248451 499348 973001 1836946 3362379 5975549
|
||||||
|
7 1 0 21 91 242 504 899 1439 2131 2992 4077 5523 7612 10856 16107 24695 38597 60640 94741 146187
|
||||||
|
15 28 45 60 63 40 -27 -160 -385 -732 -1235 -1932 -2865 -4080 -5627 -7560 -9937 -12820 -16275 -20372 -25185
|
||||||
|
12 19 30 45 64 87 114 145 180 219 262 309 360 415 474 537 604 675 750 829 912
|
||||||
|
13 37 73 123 189 273 377 503 653 829 1033 1267 1533 1833 2169 2543 2957 3413 3913 4459 5053
|
||||||
|
8 24 59 123 226 378 589 869 1228 1676 2223 2879 3654 4558 5601 6793 8144 9664 11363 13251 15338
|
||||||
|
6 0 1 22 90 259 623 1329 2590 4698 8037 13096 20482 30933 45331 64715 90294 123460 165801 219114 285418
|
||||||
|
1 0 4 15 33 59 104 204 441 970 2052 4093 7689 13677 23192 37730 59217 90084 133348 192699 272593
|
||||||
|
18 22 33 57 109 231 522 1202 2761 6298 14256 31955 70704 153980 329421 691523 1423433 2871746 5676622 10992031 20849292
|
||||||
|
21 23 32 62 131 275 575 1194 2432 4832 9409 18127 34816 66802 127618 241273 448679 816973 1452622 2519364 4262217
|
||||||
|
3 10 22 41 68 108 186 383 907 2220 5248 11707 24584 48818 92232 166773 290123 487750 795474 1262629 1955908
|
||||||
|
17 29 59 129 284 597 1180 2217 4044 7313 13292 24371 44865 82229 148827 264427 459627 780453 1294409 2098301 3328202
|
||||||
|
-4 -7 -4 11 44 101 188 311 476 689 956 1283 1676 2141 2684 3311 4028 4841 5756 6779 7916
|
||||||
|
13 31 65 132 273 571 1184 2408 4801 9423 18284 35154 66995 126451 236111 435682 793821 1427231 2530787 4423992 7621045
|
||||||
|
-2 -5 -7 -5 16 92 291 737 1664 3518 7130 14019 27008 51653 99674 196927 400914 837061 1769967 3736899 7787848
|
||||||
|
-7 -8 9 65 194 460 988 2015 3970 7595 14122 25524 44861 76745 127951 208204 331175 515722 787415 1180387 1739556
|
||||||
|
21 44 94 181 311 498 791 1326 2429 4835 10159 21876 47279 101271 213575 442351 900001 1802661 3566842 7001844 13698911
|
||||||
|
9 17 23 27 29 29 27 23 17 9 -1 -13 -27 -43 -61 -81 -103 -127 -153 -181 -211
|
||||||
|
9 15 15 4 -11 3 122 493 1382 3245 6810 13147 23740 40756 68207 115815 209575 416951 901321 2031090 4585703
|
||||||
|
15 26 51 114 247 502 981 1886 3601 6851 13046 25016 48484 94825 185957 362689 698703 1323992 2464873 4514282 8158873
|
||||||
|
28 48 72 93 98 67 -31 -251 -694 -1518 -2883 -4725 -6176 -4292 8596 50348 160256 421832 1007774 2265645 4875030
|
||||||
|
10 31 77 158 281 450 664 923 1271 1929 3607 8160 19938 48615 115226 265034 594392 1305015 2809553 5929150 12249559
|
||||||
|
11 31 66 133 257 470 820 1399 2399 4205 7534 13629 24517 43340 74768 125503 204883 325595 504506 763621 1131177
|
||||||
|
14 19 31 62 120 212 356 616 1182 2519 5613 12362 26228 53462 105720 206075 402990 801955 1634195 3399266 7148256
|
||||||
|
5 -3 -6 14 89 276 686 1539 3264 6689 13407 26460 51554 99104 187509 348173 632919 1124589 1951784 3308874 5482599
|
||||||
|
-4 3 34 112 283 625 1266 2420 4446 7930 13784 23349 38481 61590 95592 143723 209152 294317 399894 523294 656567
|
||||||
|
-4 5 33 88 192 399 815 1624 3145 5985 11417 22210 44287 89811 182627 367450 724810 1394557 2611681 4759268 8444498
|
||||||
|
15 30 58 110 197 330 520 778 1115 1542 2070 2710 3473 4370 5412 6610 7975 9518 11250 13182 15325
|
||||||
|
14 11 2 -2 32 169 513 1214 2486 4655 8264 14270 24376 41549 70783 120174 202382 336563 550862 885566 1397024
|
||||||
|
18 43 79 125 182 263 410 716 1359 2669 5267 10352 20327 40295 81829 172433 378440 857986 1978345 4565832 10419624
|
||||||
|
4 10 17 26 42 88 231 636 1675 4136 9608 21163 44514 89909 175172 330649 607626 1093546 1940883 3423120 6042846
|
||||||
|
3 22 53 98 162 263 459 900 1927 4263 9384 20245 42704 88286 179422 359061 707675 1372260 2614095 4884884 8944614
|
||||||
|
4 15 38 73 120 179 250 333 428 535 654 785 928 1083 1250 1429 1620 1823 2038 2265 2504
|
||||||
|
23 42 81 152 262 406 554 631 489 -130 -1641 -4674 -10144 -19334 -33992 -56443 -89717 -137694 -205267 -298524 -424950
|
||||||
|
12 19 49 116 230 404 678 1165 2136 4196 8684 18602 40728 90256 200608 443427 967876 2075253 4356031 8933736 17886258
|
||||||
|
-2 -8 -16 -16 7 73 207 438 805 1393 2443 4607 9452 20356 43984 92583 187392 363526 676762 1212730 2099093
|
||||||
|
15 20 22 21 17 10 0 -13 -29 -48 -70 -95 -123 -154 -188 -225 -265 -308 -354 -403 -455
|
||||||
|
2 5 14 30 53 82 115 149 180 203 212 200 159 80 -47 -233 -490 -831 -1270 -1822 -2503
|
||||||
|
8 15 38 93 209 435 852 1596 2894 5121 8921 15540 27768 52407 106190 228941 511121 1148880 2550469 5537596 11722540
|
||||||
|
-7 4 30 71 127 198 284 385 501 632 778 939 1115 1306 1512 1733 1969 2220 2486 2767 3063
|
||||||
|
4 21 54 101 157 212 245 214 42 -401 -1320 -3021 -5941 -10682 -18049 -29092 -45152 -67911 -99446 -142287 -199479
|
||||||
|
24 44 72 121 229 467 952 1889 3693 7283 14711 30431 63812 134129 280578 582555 1200874 2461318 5022490 10208249 20654203
|
||||||
|
16 44 87 158 277 466 759 1245 2165 4087 8186 16659 33308 64327 119332 212676 365094 605726 974569 1525412 2329311
|
||||||
|
23 51 104 192 325 513 766 1094 1507 2015 2628 3356 4209 5197 6330 7618 9071 10699 12512 14520 16733
|
||||||
|
10 25 51 92 164 314 665 1513 3530 8178 18521 40743 86848 179241 358175 693406 1301834 2373431 4208375 7269030 12251244
|
||||||
|
12 27 60 111 175 257 398 722 1523 3415 7570 16073 32432 62295 114440 202106 344702 569835 915392 1431035 2177845
|
||||||
|
26 49 81 132 228 419 803 1580 3151 6278 12322 23577 43719 78390 135938 228335 372296 590623 913799 1381858 2046558
|
||||||
|
13 13 25 74 204 497 1103 2287 4510 8579 15939 29260 53625 98891 184223 346449 654819 1236049 2315277 4280846 7783762
|
||||||
|
10 31 75 145 249 406 653 1054 1721 2875 4998 9151 17554 34538 67982 131336 246300 446175 779821 1316045 2148095
|
||||||
|
13 15 17 16 19 55 189 554 1427 3390 7660 16783 36127 77064 163516 344803 719657 1479081 2979707 5864762 11257059
|
||||||
|
9 21 37 66 129 268 555 1100 2060 3670 6359 11077 20036 38154 75584 151800 301771 584784 1096751 1988587 3500239
|
||||||
|
9 23 37 51 65 79 93 107 121 135 149 163 177 191 205 219 233 247 261 275 289
|
||||||
|
3 6 27 74 157 302 581 1180 2541 5628 12381 26436 54203 106408 200219 362090 631471 1065546 1745175 2782230 4328529
|
||||||
|
3 21 49 96 195 422 916 1896 3668 6604 11047 17037 23644 27511 19924 -18697 -128591 -387257 -936475 -2024770 -4072135
|
||||||
|
2 19 49 85 125 186 324 662 1428 3005 5995 11299 20215 34556 56790 90204 139094 208983 306869 441505 623713
|
||||||
|
3 -2 -12 -31 -56 -63 9 271 889 2076 4066 7065 11174 16279 21903 27015 29791 27322 15264 -12575 -64716
|
||||||
|
-7 -12 -9 28 138 383 875 1840 3763 7691 15813 32487 65944 130968 252929 473633 859549 1513078 2587643 4307502 6993318
|
||||||
|
2 1 -3 -13 -27 -17 104 527 1604 3917 8359 16227 29327 50091 81706 128255 194870 287897 415073 585715 810921
|
||||||
|
-3 -1 2 6 11 17 24 32 41 51 62 74 87 101 116 132 149 167 186 206 227
|
||||||
|
13 26 44 64 92 165 385 976 2383 5443 11681 23833 46794 89362 167440 309821 568385 1035568 1873426 3360638 5966520
|
||||||
|
14 43 88 154 261 457 833 1552 2918 5524 10539 20244 39039 75362 145344 279640 535806 1019929 1923066 3580526 6565265
|
||||||
|
9 6 5 6 9 14 21 30 41 54 69 86 105 126 149 174 201 230 261 294 329
|
||||||
|
-3 12 39 84 173 364 759 1516 2861 5100 8631 13956 21693 32588 47527 67548 93853 127820 171015 225204 292365
|
||||||
|
12 20 52 124 251 454 780 1348 2447 4728 9552 19581 39730 78636 150846 279981 503198 877348 1487316 2457130 3964541
|
||||||
|
10 4 -3 -11 -20 -30 -41 -53 -66 -80 -95 -111 -128 -146 -165 -185 -206 -228 -251 -275 -300
|
||||||
|
23 45 69 102 160 276 530 1122 2528 5807 13164 28920 61095 123874 241299 452612 819765 1437713 2448215 4057986 6562170
|
||||||
|
22 47 91 160 273 481 903 1800 3731 7881 16734 35407 74202 153333 311438 620531 1211684 2318227 4346981 7993474 14424847
|
||||||
|
3 18 59 136 255 417 617 843 1075 1284 1431 1466 1327 939 213 -955 -2685 -5114 -8397 -12708 -18241
|
||||||
|
23 49 87 137 199 273 359 457 567 689 823 969 1127 1297 1479 1673 1879 2097 2327 2569 2823
|
||||||
|
24 35 47 71 128 250 480 878 1551 2737 4986 9495 18669 36996 72341 137782 254130 453295 782681 1310815 2134438
|
||||||
10
src/bin/sources/part11.sample
Normal file
10
src/bin/sources/part11.sample
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
...#......
|
||||||
|
.......#..
|
||||||
|
#.........
|
||||||
|
..........
|
||||||
|
......#...
|
||||||
|
.#........
|
||||||
|
.........#
|
||||||
|
..........
|
||||||
|
.......#..
|
||||||
|
#...#.....
|
||||||
140
src/bin/sources/part11.txt
Normal file
140
src/bin/sources/part11.txt
Normal file
@@ -0,0 +1,140 @@
|
|||||||
|
.......#.....#.....................#.............#.................#.........................#..............................................
|
||||||
|
#.....................#.......#.................................................................................#.......#...................
|
||||||
|
.......................................................................#.........................#..................................#.......
|
||||||
|
................................................................#..............#..............................................#.............
|
||||||
|
.........................................#............................................................#....................................#
|
||||||
|
.................#..................................................#.......................................................................
|
||||||
|
...........................#...............................................................................#................................
|
||||||
|
....#.......#...........................................#..........................#.............................#..........................
|
||||||
|
....................#.............#........#................................................................................................
|
||||||
|
...................................................#...................................................#...................#................
|
||||||
|
.........................#........................................#..................................................#......................
|
||||||
|
......#..........#...........................................#...........#............#.....................................................
|
||||||
|
......................................#..........................................#.........................#.....................#..........
|
||||||
|
.#...................#..................................#.......................................#...........................................
|
||||||
|
............#.................................#.....................#.......................................................................
|
||||||
|
............................................................................................................................................
|
||||||
|
..............................#.....................................................................................#..................#....
|
||||||
|
....................................................................................#........#......#.......................................
|
||||||
|
.........................#.........................#............#...........................................#...............................
|
||||||
|
.#......#.....#.......................#.................#........................................................#.....#....................
|
||||||
|
...........................................................................#.................................................#..............
|
||||||
|
...............................................#.......................................#...............#..........................#.........
|
||||||
|
......................#..................#..................................................................................................
|
||||||
|
..........................................................................................................................#.................
|
||||||
|
......#...........................#.........................................................#........................#......................
|
||||||
|
..............................................................................................................................#.............
|
||||||
|
..#.......................#.................#............................................................................................#..
|
||||||
|
..................#....................................................#................#...................................................
|
||||||
|
....................................................#.....#....................#............................................................
|
||||||
|
...............................#............................................................................................................
|
||||||
|
..............................................#...............#..........................................................#...........#......
|
||||||
|
.#.........#........................#..................................................................#....................................
|
||||||
|
..........................................................................#.......................#........................................#
|
||||||
|
...................#......................................................................#.................................................
|
||||||
|
.............................................................................................................................#..............
|
||||||
|
.....#......................................................................................................................................
|
||||||
|
........................................................#........................#..........................................................
|
||||||
|
.............................#...............#.....................#.....#............#..................#..............................#...
|
||||||
|
............................................................................................#......#...........#............................
|
||||||
|
.........................#........#...................................................................................#.....................
|
||||||
|
...........................................................................................................................................#
|
||||||
|
.....................................................#.....#.................................................................#..............
|
||||||
|
#.........................................................................................................#.......................#.........
|
||||||
|
................#...........................................................#.....................#.........................................
|
||||||
|
..............................#..............#...................................#.......#...........................#......................
|
||||||
|
........#................#.........#............................#............................................#.............#.........#......
|
||||||
|
............................................................................................................................................
|
||||||
|
.......................................................#...............#.............................#...........................#..........
|
||||||
|
.............#.................................#............................................................................................
|
||||||
|
............................................................................................................................................
|
||||||
|
..#.............................................................................#...........................................#...........#...
|
||||||
|
............................................................................................................................................
|
||||||
|
......................................#..........................................................#................#.........................
|
||||||
|
............................#................#......#......................#...........#....................................................
|
||||||
|
............................................................................................................................................
|
||||||
|
....................................................................................................#................#..........#...........
|
||||||
|
.#............#...................#...............................#........................................#.............................#..
|
||||||
|
.........#...............................................................#..................................................................
|
||||||
|
.......................#....................#........#...........................................#..........................................
|
||||||
|
............................................................#.....................................................#.........................
|
||||||
|
..............................#.......................................................................#...................#.......#.........
|
||||||
|
............#.......................#...................#............................#......................................................
|
||||||
|
...................................................#......................................#..............................................#..
|
||||||
|
.#................#...................................................#........................#............................................
|
||||||
|
......#....................................................................#................................#...............................
|
||||||
|
...............................#....................................................................................#.......................
|
||||||
|
.........................#.....................#......#.............................................#.................................#.....
|
||||||
|
............................................................................................................................................
|
||||||
|
...............#.....................#....................................................#.................................................
|
||||||
|
..................................................................................................................#.........................
|
||||||
|
....#......#.....................................#..............................#............................#............#.....#...........
|
||||||
|
....................#.............................................#....................#.........#.......................................#..
|
||||||
|
.........................................................#..............#.............................#.....................................
|
||||||
|
............................#...........#...........................................................................#.......................
|
||||||
|
............................................................................................................................................
|
||||||
|
#..................................#...............................................................#..........#.............................
|
||||||
|
.......#......................................................................................#.................................#.......#...
|
||||||
|
.....................#....................#...............................#.....#......................................#....................
|
||||||
|
................................#..........................#......#....................#..........................#.........................
|
||||||
|
..............#...................................#........................................................................#...............#
|
||||||
|
....#....................................................................................................#..................................
|
||||||
|
.......................#....................................................................................................................
|
||||||
|
......................................#................................#..................#.................................................
|
||||||
|
.....................................................#............................................#...............................#.........
|
||||||
|
............................................................................................................................................
|
||||||
|
............................................................................................................................................
|
||||||
|
....#.................#..................................#.........................#..........................#.............................
|
||||||
|
.............#........................................................................................#..................#..................
|
||||||
|
......................................#............................................................................#........................
|
||||||
|
.........#....................................................#.........#............................................................#......
|
||||||
|
.............................................................................................#..............................................
|
||||||
|
.............................#...........#............................................................................#.....................
|
||||||
|
#..................#................................................#....................#.......................................#.........#
|
||||||
|
...................................................................................................#......#.................................
|
||||||
|
...........#.............................................#...........................#......................................................
|
||||||
|
....................................#.......................................................................................................
|
||||||
|
..................................................#..........#.........#......................#.....................#.......................
|
||||||
|
.#......#....................................#..............................................................#...............................
|
||||||
|
.............................#.............................................#................................................................
|
||||||
|
.......................#...............................................................................#....................#...............
|
||||||
|
....................................................#.....................................#...........................................#.....
|
||||||
|
................#.....................#..................#.................................................................................#
|
||||||
|
...#.....#..........................................................#................#......................................................
|
||||||
|
.............................................#...............#................................#......#......................................
|
||||||
|
...............................#...............................................#............................................................
|
||||||
|
.............................................................................................................................#.........#....
|
||||||
|
.....................#................................................#.................................................#...................
|
||||||
|
...............#.........................#.......................#..................#.......................................................
|
||||||
|
.....#......................................................................................................#.......................#.......
|
||||||
|
....................................#.................#.........................#..................#........................................
|
||||||
|
........................................................................................................................................#...
|
||||||
|
.........#..............#.....................................#........................................#.....................#..............
|
||||||
|
...............................................#...................#........................................................................
|
||||||
|
......................................#.............#..................................#.....#.......................#......................
|
||||||
|
............#.....#...............................................................................#.........................................
|
||||||
|
...#...................................................................................................................................#....
|
||||||
|
.......................#.........................#..........................................................................................
|
||||||
|
.........................................................#...........#.........................#........#..........#.............#..........
|
||||||
|
............................#..............#....................#........................................................#..................
|
||||||
|
.......#.................................................................#................#.................................................
|
||||||
|
.................#..................................................................................#........................#...........#..
|
||||||
|
...................................................#.......#................................................................................
|
||||||
|
.........................................#......................................#......................................#....................
|
||||||
|
....................................#...........................................................................#...........................
|
||||||
|
..............................#.............................................................#...........#.......................#......#....
|
||||||
|
.........#...............................................#..............#...................................................................
|
||||||
|
........................#....................#.....................................#........................................................
|
||||||
|
#...........................................................................................................................................
|
||||||
|
............................#......................................................................#.......#................................
|
||||||
|
......................................#.....................................................................................................
|
||||||
|
.....#............#.........................................#..........................#..........................................#.........
|
||||||
|
...........................................#......................#..............................................#..........................
|
||||||
|
..............#..............................................................................#............................#.............#...
|
||||||
|
..#......#...........................................#..............................#..................#.....#..............................
|
||||||
|
....................#..........#.....#...............................#......................................................................
|
||||||
|
............................................................................................................................................
|
||||||
|
.................................................#..........................................................................................
|
||||||
|
.............#..........#...............................#...............#.............#..........#.........#........#.......................
|
||||||
|
............................................#................#.................#............................................................
|
||||||
|
....................................#....................................................................................#.............#....
|
||||||
1
src/bin/sources/part15.sample
Normal file
1
src/bin/sources/part15.sample
Normal file
@@ -0,0 +1 @@
|
|||||||
|
rn=1,cm-,qp=3,cm=2,qp-,pc=4,ot=9,ab=5,pc-,pc=6,ot=7
|
||||||
1
src/bin/sources/part15.txt
Normal file
1
src/bin/sources/part15.txt
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user