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": [],
|
||||
"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]
|
||||
cached = "0.46.1"
|
||||
criterion = "0.5.1"
|
||||
num = "0.4.1"
|
||||
rayon = "1.8.0"
|
||||
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