Compare commits
14 Commits
8069595c2e
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
260450a702 | ||
|
|
7a203d3572 | ||
|
|
923ea69669 | ||
|
|
043a777732 | ||
|
|
0c814889b5 | ||
|
|
f3b87802c4 | ||
|
|
4b55f4524e | ||
|
|
d7e478ca15 | ||
|
|
79719bbb10 | ||
|
|
737572af89 | ||
|
|
067cc9c888 | ||
|
|
a6dc0b166d | ||
|
|
748aaaf82b | ||
|
|
64a7833fd9 |
265
.vscode/launch.json
vendored
Normal file
265
.vscode/launch.json
vendored
Normal file
@@ -0,0 +1,265 @@
|
|||||||
|
{
|
||||||
|
// Use IntelliSense to learn about possible attributes.
|
||||||
|
// Hover to view descriptions of existing attributes.
|
||||||
|
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||||
|
"version": "0.2.0",
|
||||||
|
"configurations": [
|
||||||
|
|
||||||
|
{
|
||||||
|
"type": "lldb",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "Debug executable 'part01'",
|
||||||
|
"cargo": {
|
||||||
|
"args": [
|
||||||
|
"build",
|
||||||
|
"--bin=part01",
|
||||||
|
"--package=advent-of-code-2023"
|
||||||
|
],
|
||||||
|
"filter": {
|
||||||
|
"name": "part01",
|
||||||
|
"kind": "bin"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"args": [],
|
||||||
|
"cwd": "${workspaceFolder}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "lldb",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "Debug unit tests in executable 'part01'",
|
||||||
|
"cargo": {
|
||||||
|
"args": [
|
||||||
|
"test",
|
||||||
|
"--no-run",
|
||||||
|
"--bin=part01",
|
||||||
|
"--package=advent-of-code-2023"
|
||||||
|
],
|
||||||
|
"filter": {
|
||||||
|
"name": "part01",
|
||||||
|
"kind": "bin"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"args": [],
|
||||||
|
"cwd": "${workspaceFolder}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "lldb",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "Debug executable 'part02'",
|
||||||
|
"cargo": {
|
||||||
|
"args": [
|
||||||
|
"build",
|
||||||
|
"--bin=part02",
|
||||||
|
"--package=advent-of-code-2023"
|
||||||
|
],
|
||||||
|
"filter": {
|
||||||
|
"name": "part02",
|
||||||
|
"kind": "bin"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"args": [],
|
||||||
|
"cwd": "${workspaceFolder}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "lldb",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "Debug unit tests in executable 'part02'",
|
||||||
|
"cargo": {
|
||||||
|
"args": [
|
||||||
|
"test",
|
||||||
|
"--no-run",
|
||||||
|
"--bin=part02",
|
||||||
|
"--package=advent-of-code-2023"
|
||||||
|
],
|
||||||
|
"filter": {
|
||||||
|
"name": "part02",
|
||||||
|
"kind": "bin"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"args": [],
|
||||||
|
"cwd": "${workspaceFolder}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "lldb",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "Debug executable 'part03'",
|
||||||
|
"cargo": {
|
||||||
|
"args": [
|
||||||
|
"build",
|
||||||
|
"--bin=part03",
|
||||||
|
"--package=advent-of-code-2023"
|
||||||
|
],
|
||||||
|
"filter": {
|
||||||
|
"name": "part03",
|
||||||
|
"kind": "bin"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"args": [],
|
||||||
|
"cwd": "${workspaceFolder}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "lldb",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "Debug unit tests in executable 'part03'",
|
||||||
|
"cargo": {
|
||||||
|
"args": [
|
||||||
|
"test",
|
||||||
|
"--no-run",
|
||||||
|
"--bin=part03",
|
||||||
|
"--package=advent-of-code-2023"
|
||||||
|
],
|
||||||
|
"filter": {
|
||||||
|
"name": "part03",
|
||||||
|
"kind": "bin"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"args": [],
|
||||||
|
"cwd": "${workspaceFolder}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "lldb",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "Debug executable 'part04'",
|
||||||
|
"cargo": {
|
||||||
|
"args": [
|
||||||
|
"build",
|
||||||
|
"--bin=part04",
|
||||||
|
"--package=advent-of-code-2023"
|
||||||
|
],
|
||||||
|
"filter": {
|
||||||
|
"name": "part04",
|
||||||
|
"kind": "bin"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"args": [],
|
||||||
|
"cwd": "${workspaceFolder}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "lldb",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "Debug unit tests in executable 'part04'",
|
||||||
|
"cargo": {
|
||||||
|
"args": [
|
||||||
|
"test",
|
||||||
|
"--no-run",
|
||||||
|
"--bin=part04",
|
||||||
|
"--package=advent-of-code-2023"
|
||||||
|
],
|
||||||
|
"filter": {
|
||||||
|
"name": "part04",
|
||||||
|
"kind": "bin"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"args": [],
|
||||||
|
"cwd": "${workspaceFolder}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "lldb",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "Debug executable 'part05'",
|
||||||
|
"cargo": {
|
||||||
|
"args": [
|
||||||
|
"build",
|
||||||
|
"--bin=part05",
|
||||||
|
"--package=advent-of-code-2023"
|
||||||
|
],
|
||||||
|
"filter": {
|
||||||
|
"name": "part05",
|
||||||
|
"kind": "bin"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"args": [],
|
||||||
|
"cwd": "${workspaceFolder}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "lldb",
|
||||||
|
"request": "launch",
|
||||||
|
"name": "Debug executable 'part06'",
|
||||||
|
"cargo": {
|
||||||
|
"args": [
|
||||||
|
"build",
|
||||||
|
"--bin=part06",
|
||||||
|
"--package=advent-of-code-2023"
|
||||||
|
],
|
||||||
|
"filter": {
|
||||||
|
"name": "part06",
|
||||||
|
"kind": "bin"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"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}"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
17
Cargo.toml
Normal file
17
Cargo.toml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
[package]
|
||||||
|
name = "advent-of-code-2023"
|
||||||
|
version = "0.1.0"
|
||||||
|
edition = "2021"
|
||||||
|
|
||||||
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||||
|
|
||||||
|
[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);
|
||||||
57
src/bin/part01.rs
Normal file
57
src/bin/part01.rs
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
fn main() {
|
||||||
|
let lines = std::fs::read_to_string("src/bin/part01.txt")
|
||||||
|
.expect("Could not read file")
|
||||||
|
.lines()
|
||||||
|
.map(|line| line.parse::<String>().unwrap())
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
|
let mut sum = 0;
|
||||||
|
|
||||||
|
for i in 0..lines.len() {
|
||||||
|
let mut first_digit: Option<u32> = None;
|
||||||
|
let mut last_digit: Option<u32> = None;
|
||||||
|
let line = replace_string_numbers(lines[i].clone());
|
||||||
|
|
||||||
|
for c in line.chars() {
|
||||||
|
if c.is_digit(10) {
|
||||||
|
if first_digit.is_none() {
|
||||||
|
first_digit = c.to_digit(10);
|
||||||
|
} else {
|
||||||
|
last_digit = c.to_digit(10);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if last_digit.is_none() {
|
||||||
|
last_digit = first_digit;
|
||||||
|
}
|
||||||
|
|
||||||
|
sum += first_digit.unwrap() * 10 + last_digit.unwrap();
|
||||||
|
|
||||||
|
//println!("{}: {}{} -> {}", lines[i], first_digit.unwrap(), last_digit.unwrap(), sum);
|
||||||
|
}
|
||||||
|
|
||||||
|
println!("\nTotal sum: {}", sum);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn replace_string_numbers(s: String) -> String {
|
||||||
|
let mut s = String::from(s);
|
||||||
|
s = s.replace("twone", "21");
|
||||||
|
s = s.replace("threeight", "38");
|
||||||
|
s = s.replace("nineight", "98");
|
||||||
|
s = s.replace("eightwo", "82");
|
||||||
|
s = s.replace("fiveight", "58");
|
||||||
|
s = s.replace("sevenine", "79");
|
||||||
|
s = s.replace("eighthree", "83");
|
||||||
|
s = s.replace("oneight", "18");
|
||||||
|
s = s.replace("one", "1");
|
||||||
|
s = s.replace("two", "2");
|
||||||
|
s = s.replace("three", "3");
|
||||||
|
s = s.replace("four", "4");
|
||||||
|
s = s.replace("five", "5");
|
||||||
|
s = s.replace("six", "6");
|
||||||
|
s = s.replace("seven", "7");
|
||||||
|
s = s.replace("eight", "8");
|
||||||
|
s = s.replace("nine", "9");
|
||||||
|
|
||||||
|
s
|
||||||
|
}
|
||||||
97
src/bin/part02.rs
Normal file
97
src/bin/part02.rs
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
use regex::Regex;
|
||||||
|
|
||||||
|
struct Game {
|
||||||
|
id: u8,
|
||||||
|
draws: Vec<Draw>,
|
||||||
|
minimal_set: Draw
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Game {
|
||||||
|
fn is_valid(&self) -> bool {
|
||||||
|
self.draws.iter().any(|draw| !draw.is_valid()) == false
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_invalid_draws(&self) -> Vec<&Draw> {
|
||||||
|
self.draws.iter().filter(|draw| !draw.is_valid()).collect::<Vec<_>>()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_power(&self) -> u32 {
|
||||||
|
self.minimal_set.red as u32 * self.minimal_set.green as u32 * self.minimal_set.blue as u32
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
struct Draw {
|
||||||
|
red: u8,
|
||||||
|
green: u8,
|
||||||
|
blue: u8
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Draw {
|
||||||
|
fn is_valid(&self) -> bool {
|
||||||
|
self.red <= MAX_RED && self.green <= MAX_GREEN && self.blue <= MAX_BLUE
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const MAX_RED: u8 = 12;
|
||||||
|
const MAX_GREEN: u8 = 13;
|
||||||
|
const MAX_BLUE: u8 = 14;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let games = load_input();
|
||||||
|
|
||||||
|
let valid_games = games.iter().filter(|game| {
|
||||||
|
let is_valid = game.is_valid();
|
||||||
|
println!("Game {} is valid: {} | Power: {}", game.id, is_valid, game.get_power());
|
||||||
|
if !is_valid {
|
||||||
|
println!("\tInvalid draws: {:?}", game.get_invalid_draws());
|
||||||
|
}
|
||||||
|
is_valid
|
||||||
|
}).collect::<Vec<_>>();
|
||||||
|
|
||||||
|
println!("Valid games: {}, Sum of IDs: {}, Sum of powers: {}",
|
||||||
|
valid_games.len(),
|
||||||
|
valid_games.iter().map(|g| g.id as u32).sum::<u32>(),
|
||||||
|
games.iter().map(|g| g.get_power()).sum::<u32>());
|
||||||
|
}
|
||||||
|
|
||||||
|
fn load_input() -> Vec<Game> {
|
||||||
|
let re = Regex::new(r"(?:(?P<green>\d+) green|(?P<blue>\d+) blue|(?P<red>\d+) red)+").unwrap();
|
||||||
|
|
||||||
|
let games = std::fs::read_to_string("src/bin/part02.txt")
|
||||||
|
.expect("Could not read file")
|
||||||
|
.lines()
|
||||||
|
.map(|line| {
|
||||||
|
let mut line = line.split(": ");
|
||||||
|
let id = line.next().unwrap().strip_prefix("Game ").unwrap().parse::<u8>().unwrap();
|
||||||
|
let raw_draws = line.next().unwrap().split("; ");
|
||||||
|
let draws = raw_draws.map(|draw| {
|
||||||
|
let mut red: u8 = 0;
|
||||||
|
let mut green: u8 = 0;
|
||||||
|
let mut blue: u8 = 0;
|
||||||
|
for res in re.captures_iter(draw) {
|
||||||
|
if let Some(m) = res.name("red") {
|
||||||
|
red = m.as_str().parse::<u8>().unwrap();
|
||||||
|
}
|
||||||
|
if let Some(m) = res.name("green") {
|
||||||
|
green = m.as_str().parse::<u8>().unwrap();
|
||||||
|
}
|
||||||
|
if let Some(m) = res.name("blue") {
|
||||||
|
blue = m.as_str().parse::<u8>().unwrap();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Draw { red, green, blue }
|
||||||
|
}).collect::<Vec<_>>();
|
||||||
|
|
||||||
|
let minimal_set = Draw {
|
||||||
|
red: draws.iter().map(|draw| draw.red).max().unwrap(),
|
||||||
|
green: draws.iter().map(|draw| draw.green).max().unwrap(),
|
||||||
|
blue: draws.iter().map(|draw| draw.blue).max().unwrap()
|
||||||
|
};
|
||||||
|
|
||||||
|
Game { id, draws, minimal_set }
|
||||||
|
})
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
|
games
|
||||||
|
}
|
||||||
193
src/bin/part03.rs
Normal file
193
src/bin/part03.rs
Normal file
@@ -0,0 +1,193 @@
|
|||||||
|
use regex::Regex;
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
struct Line {
|
||||||
|
parts: Vec<PartNumber>,
|
||||||
|
symbols: Vec<Symbol>,
|
||||||
|
raw: String
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
struct Symbol {
|
||||||
|
text: String,
|
||||||
|
position: u32
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Copy, Clone, Debug)]
|
||||||
|
struct PartNumber {
|
||||||
|
num: u32,
|
||||||
|
position: u32,
|
||||||
|
adjacent_horizontal: bool,
|
||||||
|
adjacent_vertical: bool
|
||||||
|
}
|
||||||
|
|
||||||
|
impl PartNumber {
|
||||||
|
fn is_valid(&self) -> bool {
|
||||||
|
self.adjacent_horizontal || self.adjacent_vertical
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let matrix = load_input();
|
||||||
|
let mut analyzed_matrix: Vec<Line> = Vec::new();
|
||||||
|
let mut analyzed_parts: Vec<PartNumber> = Vec::new();
|
||||||
|
let mut gear_ratios: Vec<u32> = Vec::new();
|
||||||
|
|
||||||
|
for (row_index, row) in matrix.iter().enumerate() {
|
||||||
|
for (_, part) in row.parts.iter().enumerate() {
|
||||||
|
let mut adjacent_horizontal = false;
|
||||||
|
let mut adjacent_vertical = false;
|
||||||
|
|
||||||
|
if row.symbols.iter().find(|s|
|
||||||
|
(part.position > 0 && s.position == part.position - 1) ||
|
||||||
|
s.position == part.position + part.num.to_string().len() as u32
|
||||||
|
).is_some() {
|
||||||
|
adjacent_horizontal = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if row_index > 0 && matrix[row_index - 1].symbols.iter().find(|s|
|
||||||
|
(part.position > 0 && s.position >= part.position - 1) &&
|
||||||
|
s.position <= part.position + part.num.to_string().len() as u32
|
||||||
|
).is_some(){
|
||||||
|
adjacent_vertical = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if row_index < matrix.len() - 1 && matrix[row_index + 1].symbols.iter().find(|s|
|
||||||
|
(part.position > 0 && s.position >= part.position - 1) &&
|
||||||
|
s.position <= part.position + part.num.to_string().len() as u32
|
||||||
|
).is_some(){
|
||||||
|
adjacent_vertical = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if analyzed_matrix.len() <= row_index {
|
||||||
|
analyzed_matrix.push(Line {
|
||||||
|
parts: Vec::new(),
|
||||||
|
symbols: Vec::new(),
|
||||||
|
raw: row.raw.clone()
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
analyzed_matrix[row_index].parts.push(PartNumber {
|
||||||
|
num: part.num,
|
||||||
|
position: part.position,
|
||||||
|
adjacent_horizontal,
|
||||||
|
adjacent_vertical
|
||||||
|
});
|
||||||
|
|
||||||
|
analyzed_parts.push(PartNumber {
|
||||||
|
num: part.num,
|
||||||
|
position: part.position,
|
||||||
|
adjacent_horizontal,
|
||||||
|
adjacent_vertical
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
print!("{} ->", row.raw);
|
||||||
|
|
||||||
|
for (_, symbol) in row.symbols.iter().enumerate() {
|
||||||
|
if symbol.text != "*" {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut adjacent_parts: Vec<PartNumber> = Vec::new();
|
||||||
|
let pred = |p: &&PartNumber| p.position + p.num.to_string().len() as u32 >= symbol.position && p.position <= symbol.position + 1;
|
||||||
|
|
||||||
|
adjacent_parts.extend(row.parts.iter().filter(pred));
|
||||||
|
if row_index > 0 {
|
||||||
|
adjacent_parts.extend(matrix[row_index-1].parts.iter().filter(pred));
|
||||||
|
}
|
||||||
|
if row_index + 1 <= matrix.len() {
|
||||||
|
adjacent_parts.extend(matrix[row_index+1].parts.iter().filter(pred));
|
||||||
|
}
|
||||||
|
|
||||||
|
if adjacent_parts.len() == 2 {
|
||||||
|
print!(" {} * {}, ", adjacent_parts[0].num, adjacent_parts[1].num);
|
||||||
|
gear_ratios.push(adjacent_parts[0].num * adjacent_parts[1].num);
|
||||||
|
} else if adjacent_parts.len() > 0 {
|
||||||
|
print!(" (");
|
||||||
|
for (i, part) in adjacent_parts.iter().enumerate() {
|
||||||
|
print!("{}", part.num);
|
||||||
|
if i < adjacent_parts.len() - 1 {
|
||||||
|
print!(" * ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print!("), ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
println!();
|
||||||
|
|
||||||
|
// for (i, c) in row.raw.chars().enumerate() {
|
||||||
|
// if !c.is_numeric() {
|
||||||
|
// print!("{}", c);
|
||||||
|
// continue;
|
||||||
|
// }
|
||||||
|
// if let Some(part) = analyzed_matrix.iter().find(|l| l.raw == row.raw).unwrap().parts.iter().find(|p| p.position == i as u32) {
|
||||||
|
// if part.is_valid() {
|
||||||
|
// print!("T");
|
||||||
|
// } else {
|
||||||
|
// print!("F");
|
||||||
|
// }
|
||||||
|
// } else {
|
||||||
|
// print!("{}", c);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// println!();
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut sum: u32 = 0;
|
||||||
|
analyzed_parts.iter().for_each(|part| {
|
||||||
|
//println!("Part: {} \t| Valid: {} - H: {} | V: {}", part.num, part.is_valid(), part.adjacent_horizontal, part.adjacent_vertical);
|
||||||
|
|
||||||
|
if part.is_valid() {
|
||||||
|
sum += part.num;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
println!("Sum: {}", sum);
|
||||||
|
println!("Gear ratios: {:?}", gear_ratios);
|
||||||
|
println!("Gear ratio sum: {}", gear_ratios.iter().sum::<u32>());
|
||||||
|
}
|
||||||
|
|
||||||
|
fn load_input() -> Vec<Line> {
|
||||||
|
let re = Regex::new(r"(\d+|[^.\n])").unwrap();
|
||||||
|
|
||||||
|
let lines = std::fs::read_to_string("src/bin/part03.txt")
|
||||||
|
.expect("Could not read file")
|
||||||
|
.lines()
|
||||||
|
.map(|line| {
|
||||||
|
let mut parts = Vec::new();
|
||||||
|
let mut last_part_offset: u32 = 0;
|
||||||
|
let mut symbols = Vec::new();
|
||||||
|
let mut last_symbol_offset: u32 = 0;
|
||||||
|
|
||||||
|
for caps in re.captures_iter(line) {
|
||||||
|
if caps[1].chars().all(|c| c.is_numeric()) {
|
||||||
|
let pos = line.chars().skip(last_part_offset as usize).collect::<String>().find(&caps[1]).unwrap() as u32 + last_part_offset;
|
||||||
|
let number = caps[1].parse::<u32>().unwrap();
|
||||||
|
parts.push(PartNumber {
|
||||||
|
num: number,
|
||||||
|
position: pos,
|
||||||
|
adjacent_horizontal: false,
|
||||||
|
adjacent_vertical: false
|
||||||
|
});
|
||||||
|
last_part_offset = pos + number.to_string().len() as u32;
|
||||||
|
} else {
|
||||||
|
let pos = line.chars().skip(last_symbol_offset as usize).collect::<String>().find(&caps[1]).unwrap() as u32 + last_symbol_offset;
|
||||||
|
symbols.push(Symbol {
|
||||||
|
position: pos,
|
||||||
|
text: caps[1].to_string()
|
||||||
|
});
|
||||||
|
last_symbol_offset = pos + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Line {
|
||||||
|
parts,
|
||||||
|
symbols,
|
||||||
|
raw: line.to_string()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
|
lines
|
||||||
|
}
|
||||||
84
src/bin/part04.rs
Normal file
84
src/bin/part04.rs
Normal file
@@ -0,0 +1,84 @@
|
|||||||
|
use std::time;
|
||||||
|
|
||||||
|
#[derive(Clone, Debug)]
|
||||||
|
struct Card {
|
||||||
|
id: u8,
|
||||||
|
winning_count: u8
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Card {
|
||||||
|
fn get_points(&self) -> u32 {
|
||||||
|
let correct_count = self.winning_count as u32;
|
||||||
|
if correct_count == 0 {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
u32::pow(2, correct_count - 1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const PRINT_DEBUG: bool = false;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let s1 = time::Instant::now();
|
||||||
|
let cards = load_input();
|
||||||
|
let e1 = s1.elapsed();
|
||||||
|
println!("Loaded {} cards in {:?}", cards.len(), e1);
|
||||||
|
|
||||||
|
// part one
|
||||||
|
let s2 = time::Instant::now();
|
||||||
|
let total_points = cards.iter().map(|c| c.get_points()).sum::<u32>();
|
||||||
|
let e2 = s2.elapsed();
|
||||||
|
println!("Calculated total points in {:?}", e2);
|
||||||
|
|
||||||
|
// part two
|
||||||
|
let s3: time::Instant = time::Instant::now();
|
||||||
|
let total = calc_total_cards(&cards);
|
||||||
|
let e3 = s3.elapsed();
|
||||||
|
println!("Calculated total cards in {:?}", e3);
|
||||||
|
|
||||||
|
println!("Total time: {:?}", e1 + e2);
|
||||||
|
|
||||||
|
println!("Total points: {}", total_points);
|
||||||
|
println!("Total copies: {}", total);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn load_input() -> Vec<Card> {
|
||||||
|
let cards = std::fs::read_to_string("src/bin/part04.txt")
|
||||||
|
.expect("Could not read file")
|
||||||
|
.lines()
|
||||||
|
.map(|line| {
|
||||||
|
let parts = line.split(": ").collect::<Vec<_>>();
|
||||||
|
let card_id = parts[0].split_whitespace().last().unwrap().parse::<u8>().unwrap();
|
||||||
|
let numbers = parts[1].split(" | ").collect::<Vec<_>>();
|
||||||
|
let scoring_numbers = numbers[0].split_whitespace().map(|n| n.parse::<u8>().unwrap()).collect::<Vec<_>>();
|
||||||
|
let actual_numbers = numbers[1].split_whitespace().map(|n| n.parse::<u8>().unwrap()).collect::<Vec<_>>();
|
||||||
|
let winning_numbers: Vec<u8> = actual_numbers.iter().filter(|n| scoring_numbers.contains(n)).map(|n| *n).collect();
|
||||||
|
|
||||||
|
let card = Card {
|
||||||
|
id: card_id,
|
||||||
|
winning_count: winning_numbers.len() as u8,
|
||||||
|
};
|
||||||
|
|
||||||
|
if PRINT_DEBUG {
|
||||||
|
println!("Card: {} - Winning: {:?} - Score: {}", card.id, card.winning_count, card.get_points());
|
||||||
|
}
|
||||||
|
|
||||||
|
card
|
||||||
|
})
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
|
cards
|
||||||
|
}
|
||||||
|
|
||||||
|
fn calc_total_cards(cards: &Vec<Card>) -> u32 {
|
||||||
|
let mut played = vec![0; cards.len()];
|
||||||
|
|
||||||
|
for i in 0..cards.len() {
|
||||||
|
played[i] += 1;
|
||||||
|
for w in 0..cards[i].winning_count as usize {
|
||||||
|
played[i+w+1] += played[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
played.iter().sum()
|
||||||
|
}
|
||||||
166
src/bin/part05.rs
Normal file
166
src/bin/part05.rs
Normal file
@@ -0,0 +1,166 @@
|
|||||||
|
use std::time;
|
||||||
|
|
||||||
|
use rayon::prelude::*;
|
||||||
|
|
||||||
|
struct Almanac {
|
||||||
|
seeds: Vec<u32>,
|
||||||
|
seed_to_soil: Vec<Mapping>,
|
||||||
|
soil_to_fertilizer: Vec<Mapping>,
|
||||||
|
fertilizer_to_water: Vec<Mapping>,
|
||||||
|
water_to_light:Vec<Mapping>,
|
||||||
|
light_to_temperature: Vec<Mapping>,
|
||||||
|
temperature_to_humidity: Vec<Mapping>,
|
||||||
|
humidity_to_location: Vec<Mapping>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Almanac {
|
||||||
|
fn new() -> Almanac {
|
||||||
|
Almanac {
|
||||||
|
seeds: Vec::new(),
|
||||||
|
seed_to_soil: Vec::new(),
|
||||||
|
soil_to_fertilizer: Vec::new(),
|
||||||
|
fertilizer_to_water: Vec::new(),
|
||||||
|
water_to_light: Vec::new(),
|
||||||
|
light_to_temperature: Vec::new(),
|
||||||
|
temperature_to_humidity: Vec::new(),
|
||||||
|
humidity_to_location: Vec::new(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_soil(&self, seed: u32) -> u32 {
|
||||||
|
map(seed, &self.seed_to_soil)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_fertilizer(&self, seed: u32) -> u32 {
|
||||||
|
map(self.get_soil(seed), &self.soil_to_fertilizer)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_water(&self, seed: u32) -> u32 {
|
||||||
|
map(self.get_fertilizer(seed), &self.fertilizer_to_water)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_light(&self, seed: u32) -> u32 {
|
||||||
|
map(self.get_water(seed), &self.water_to_light)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_temperature(&self, seed: u32) -> u32 {
|
||||||
|
map(self.get_light(seed), &self.light_to_temperature)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_humidity(&self, seed: u32) -> u32 {
|
||||||
|
map(self.get_temperature(seed), &self.temperature_to_humidity)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_location(&self, seed: u32) -> u32 {
|
||||||
|
map(self.get_humidity(seed), &self.humidity_to_location)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
struct Mapping {
|
||||||
|
dst_range_start: u64,
|
||||||
|
src_range_start: u64,
|
||||||
|
range_length: u64
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
let s = time::Instant::now();
|
||||||
|
|
||||||
|
let almanac = load_input();
|
||||||
|
let mut locations: Vec<u32> = Vec::new();
|
||||||
|
|
||||||
|
// for seed in &almanac.seeds {
|
||||||
|
// let location = almanac.get_location(*seed);
|
||||||
|
// locations.push(location);
|
||||||
|
|
||||||
|
// println!("Seed: {}", seed);
|
||||||
|
// println!("Location: {}", location);
|
||||||
|
// println!();
|
||||||
|
// }
|
||||||
|
|
||||||
|
// println!("Lowest location #1: {}", locations.iter().min().unwrap());
|
||||||
|
// locations.clear();
|
||||||
|
|
||||||
|
let mut seeds = almanac.seeds.iter();
|
||||||
|
loop {
|
||||||
|
let seed_start = seeds.next().unwrap_or(&0);
|
||||||
|
if *seed_start == 0 {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
let seed_end = seed_start + seeds.next().unwrap();
|
||||||
|
let seed_count = seed_end - seed_start;
|
||||||
|
|
||||||
|
let s1 = time::Instant::now();
|
||||||
|
|
||||||
|
let locs = (*seed_start..seed_end).into_par_iter().map(|seed| {
|
||||||
|
almanac.get_location(seed)
|
||||||
|
});
|
||||||
|
locations.push(locs.min().unwrap());
|
||||||
|
|
||||||
|
let d1 = time::Instant::now().duration_since(s1);
|
||||||
|
println!("Parsed {} seeds in {:?} ({} seeds/s)", seed_count, d1, seed_count as f64 / d1.as_secs_f64());
|
||||||
|
}
|
||||||
|
|
||||||
|
let d = time::Instant::now().duration_since(s);
|
||||||
|
println!("Parsed in {:?}", d);
|
||||||
|
|
||||||
|
println!("Lowest location #2: {}", locations.iter().min().unwrap());
|
||||||
|
}
|
||||||
|
|
||||||
|
fn load_input() -> Almanac {
|
||||||
|
let mut almanac = Almanac::new();
|
||||||
|
|
||||||
|
let data = std::fs::read_to_string("src/bin/part05.txt")
|
||||||
|
.expect("Could not read file");
|
||||||
|
let mut lines = data.lines();
|
||||||
|
|
||||||
|
almanac.seeds = lines.next().unwrap().split(": ").last().unwrap().split_whitespace().map(|s| s.parse::<u32>().unwrap()).collect::<Vec<_>>();
|
||||||
|
almanac.seed_to_soil = parse_map(&mut lines);
|
||||||
|
almanac.soil_to_fertilizer = parse_map(&mut lines);
|
||||||
|
almanac.fertilizer_to_water = parse_map(&mut lines);
|
||||||
|
almanac.water_to_light = parse_map(&mut lines);
|
||||||
|
almanac.light_to_temperature = parse_map(&mut lines);
|
||||||
|
almanac.temperature_to_humidity = parse_map(&mut lines);
|
||||||
|
almanac.humidity_to_location = parse_map(&mut lines);
|
||||||
|
|
||||||
|
almanac
|
||||||
|
}
|
||||||
|
|
||||||
|
fn parse_map(line_iter: &mut dyn Iterator<Item=&str>) -> Vec<Mapping> {
|
||||||
|
let mut mappings = Vec::new();
|
||||||
|
|
||||||
|
line_iter.nth(0);
|
||||||
|
|
||||||
|
loop {
|
||||||
|
let line = line_iter.next().unwrap_or("");
|
||||||
|
if line.is_empty() {
|
||||||
|
break;
|
||||||
|
} else if line.ends_with(":") {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let mut raw_mapping = line.split_whitespace();
|
||||||
|
mappings.push(Mapping {
|
||||||
|
dst_range_start: raw_mapping.next().unwrap().parse::<u64>().unwrap(),
|
||||||
|
src_range_start: raw_mapping.next().unwrap().parse::<u64>().unwrap(),
|
||||||
|
range_length: raw_mapping.next().unwrap().parse::<u64>().unwrap()
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
mappings.sort_by(|a, b| b.src_range_start.cmp(&a.src_range_start));
|
||||||
|
|
||||||
|
mappings
|
||||||
|
}
|
||||||
|
|
||||||
|
fn map(src: u32, mappings: &Vec<Mapping>) -> u32 {
|
||||||
|
let src = src as u64;
|
||||||
|
let mut dst = src;
|
||||||
|
|
||||||
|
let mapping = mappings.iter().find(|mapping| {
|
||||||
|
src >= mapping.src_range_start && src < mapping.src_range_start + mapping.range_length
|
||||||
|
});
|
||||||
|
|
||||||
|
if let Some(mapping) = mapping {
|
||||||
|
dst = (mapping.dst_range_start + src) - mapping.src_range_start;
|
||||||
|
}
|
||||||
|
|
||||||
|
dst as u32
|
||||||
|
}
|
||||||
87
src/bin/part06.rs
Normal file
87
src/bin/part06.rs
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
use std::time;
|
||||||
|
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
|
struct Race {
|
||||||
|
time: u64,
|
||||||
|
distance: u64,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Race {
|
||||||
|
fn get_boundaries(&self) -> (u32, u32) {
|
||||||
|
let sqrt = ((self.time * self.time - 4 * self.distance) as f64).sqrt() / 2.0;
|
||||||
|
let t1 = (self.time as f64 / 2.0) - sqrt + 0.0001;
|
||||||
|
let t2 = (self.time as f64 / 2.0) + sqrt - 0.0001;
|
||||||
|
(t1.ceil() as u32, t2.floor() as u32)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_num_of_solutions(&self) -> u32 {
|
||||||
|
let (t1, t2) = self.get_boundaries();
|
||||||
|
t2 - t1 + 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
println!("PART 1");
|
||||||
|
|
||||||
|
let s1 = time::Instant::now();
|
||||||
|
let races = load_input_part1();
|
||||||
|
let d1 = s1.elapsed();
|
||||||
|
println!("Load: {:?}", d1);
|
||||||
|
|
||||||
|
let s2 = time::Instant::now();
|
||||||
|
let num_solutions = races.iter().map(|r| r.get_num_of_solutions()).collect::<Vec<_>>();
|
||||||
|
let d2 = s2.elapsed();
|
||||||
|
println!("Num-Solutions: {:?} in {:?}", num_solutions, d2);
|
||||||
|
|
||||||
|
let s3 = time::Instant::now();
|
||||||
|
let result: u32 = num_solutions.iter().map(|n| *n as u32).product();
|
||||||
|
let d3 = s3.elapsed();
|
||||||
|
println!("Result: {} in {:?}", result, d3);
|
||||||
|
|
||||||
|
println!("PART 2");
|
||||||
|
|
||||||
|
let race = load_input_part2();
|
||||||
|
let s4 = time::Instant::now();
|
||||||
|
let num_solutions = race.get_num_of_solutions();
|
||||||
|
let d4 = s4.elapsed();
|
||||||
|
println!("Num-Solutions: {:?} in {:?}", num_solutions, d4);
|
||||||
|
|
||||||
|
println!("Total: {:?}", d1 + d2 + d3 + d4);
|
||||||
|
}
|
||||||
|
|
||||||
|
fn load_input_part1() -> Vec<Race> {
|
||||||
|
let mut races: Vec<Race> = Vec::new();
|
||||||
|
|
||||||
|
let data = std::fs::read_to_string("src/bin/part06.txt")
|
||||||
|
.expect("Could not read file");
|
||||||
|
let mut lines = data.lines();
|
||||||
|
|
||||||
|
let times = lines.next().unwrap().split_whitespace().skip(1).map(|s| s.parse::<u64>().unwrap()).collect::<Vec<_>>();
|
||||||
|
let distances = lines.next().unwrap().split_whitespace().skip(1).map(|s| s.parse::<u64>().unwrap()).collect::<Vec<_>>();
|
||||||
|
|
||||||
|
for (i, t) in times.iter().enumerate() {
|
||||||
|
races.push(
|
||||||
|
Race {
|
||||||
|
time: *t,
|
||||||
|
distance: distances[i]
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
races
|
||||||
|
}
|
||||||
|
|
||||||
|
fn load_input_part2() -> Race {
|
||||||
|
let data = std::fs::read_to_string("src/bin/part06.txt")
|
||||||
|
.expect("Could not read file");
|
||||||
|
let mut lines = data.lines();
|
||||||
|
|
||||||
|
let time = lines.next().unwrap().split_whitespace().skip(1).fold(String::new(), |acc, x| acc.to_owned() + x).parse::<u64>().unwrap();
|
||||||
|
let distance = lines.next().unwrap().split_whitespace().skip(1).fold(String::new(), |acc, x| acc.to_owned() + x).parse::<u64>().unwrap();
|
||||||
|
|
||||||
|
Race {
|
||||||
|
time,
|
||||||
|
distance
|
||||||
|
}
|
||||||
|
}
|
||||||
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
|
||||||
|
}
|
||||||
1000
src/bin/sources/part01.txt
Normal file
1000
src/bin/sources/part01.txt
Normal file
File diff suppressed because it is too large
Load Diff
100
src/bin/sources/part02.txt
Normal file
100
src/bin/sources/part02.txt
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
Game 1: 4 red, 8 green; 8 green, 6 red; 13 red, 8 green; 2 blue, 4 red, 4 green
|
||||||
|
Game 2: 5 blue; 1 red, 3 blue; 1 red, 7 blue, 1 green; 1 red, 8 blue; 7 blue, 1 red; 4 blue, 1 green, 1 red
|
||||||
|
Game 3: 8 blue, 5 green, 15 red; 6 red, 6 blue, 3 green; 8 red, 2 green; 10 blue, 10 red, 6 green; 8 red, 6 blue; 15 red, 5 green, 2 blue
|
||||||
|
Game 4: 10 green, 12 red, 14 blue; 5 green, 9 red, 7 blue; 14 blue, 12 red; 8 blue, 7 green, 11 red
|
||||||
|
Game 5: 13 blue, 10 red, 7 green; 3 green, 8 red, 4 blue; 16 red, 5 green, 5 blue; 2 blue, 9 red, 7 green; 5 red, 14 blue, 3 green; 2 red, 11 blue, 2 green
|
||||||
|
Game 6: 3 blue, 1 green; 10 green, 12 red, 6 blue; 3 green, 2 red, 5 blue; 2 blue, 11 green, 2 red; 1 red, 5 blue, 9 green
|
||||||
|
Game 7: 2 blue, 10 green; 3 red, 10 blue; 3 green, 8 blue, 5 red; 8 green, 10 blue, 2 red
|
||||||
|
Game 8: 15 red, 12 blue, 5 green; 10 red, 12 blue, 5 green; 10 red, 7 green
|
||||||
|
Game 9: 18 blue, 14 red; 3 green, 9 blue; 1 blue, 11 red; 5 red, 7 blue, 3 green; 8 red, 4 green, 1 blue
|
||||||
|
Game 10: 2 blue; 10 green, 4 blue, 3 red; 5 green, 4 red, 4 blue; 1 red, 3 blue, 4 green; 2 blue, 5 red, 3 green; 3 green, 2 red, 2 blue
|
||||||
|
Game 11: 4 blue, 19 green; 19 blue, 12 green, 17 red; 11 red, 10 blue, 17 green; 9 green, 18 blue; 14 green, 9 red, 18 blue; 15 blue, 6 green, 19 red
|
||||||
|
Game 12: 1 green, 6 blue, 2 red; 6 blue, 2 red, 8 green; 2 green, 2 red, 7 blue; 1 red, 3 blue, 6 green
|
||||||
|
Game 13: 2 red, 11 blue, 4 green; 2 red, 7 blue; 9 green, 1 red, 12 blue; 13 blue, 8 green; 11 blue, 8 green, 1 red; 1 red, 2 blue
|
||||||
|
Game 14: 1 green, 4 blue, 11 red; 11 green, 6 blue, 7 red; 7 green, 6 blue, 4 red; 12 blue, 10 red, 11 green
|
||||||
|
Game 15: 1 green, 19 red, 3 blue; 11 red, 3 blue; 20 red, 4 blue
|
||||||
|
Game 16: 3 red, 1 green, 7 blue; 3 blue, 4 red, 1 green; 6 blue, 7 red, 3 green
|
||||||
|
Game 17: 7 blue, 4 red, 19 green; 7 green, 4 red; 8 green, 2 red, 4 blue
|
||||||
|
Game 18: 1 red, 1 blue, 6 green; 2 red, 6 green, 1 blue; 4 green, 1 red, 1 blue
|
||||||
|
Game 19: 4 blue, 8 green, 6 red; 2 red, 9 green, 4 blue; 9 green, 8 red, 6 blue; 3 red, 6 blue, 9 green; 8 red, 4 blue, 7 green
|
||||||
|
Game 20: 3 blue, 7 green, 13 red; 13 blue; 12 red, 14 blue; 3 red, 6 green, 8 blue
|
||||||
|
Game 21: 5 green, 2 red, 10 blue; 2 red, 2 green, 6 blue; 1 blue, 1 red, 7 green; 4 blue, 1 red, 2 green
|
||||||
|
Game 22: 2 red; 1 green, 7 red; 3 red, 1 green, 1 blue; 4 red, 5 green, 3 blue; 1 blue, 2 green
|
||||||
|
Game 23: 15 red, 1 blue, 3 green; 6 blue, 3 green, 2 red; 6 green, 4 red, 1 blue
|
||||||
|
Game 24: 17 green; 1 red, 2 blue, 3 green; 10 blue, 1 green; 1 green; 1 red, 2 blue, 1 green
|
||||||
|
Game 25: 2 green, 8 blue, 1 red; 1 blue, 1 red, 9 green; 1 blue, 2 green, 2 red; 3 red, 6 blue
|
||||||
|
Game 26: 12 red, 19 green, 4 blue; 2 red, 10 blue, 15 green; 14 blue, 17 red, 3 green; 1 green, 15 red, 3 blue
|
||||||
|
Game 27: 11 green, 1 red, 9 blue; 3 green, 10 blue; 9 green, 10 blue, 1 red; 4 green, 3 blue, 1 red; 2 blue, 5 green, 2 red; 17 blue, 2 red, 5 green
|
||||||
|
Game 28: 10 green, 10 red, 5 blue; 5 red, 4 blue, 8 green; 3 green, 10 red, 3 blue; 2 blue, 8 green, 1 red; 6 red, 1 green, 4 blue
|
||||||
|
Game 29: 3 blue, 11 red, 1 green; 5 blue, 3 green, 6 red; 8 red, 12 blue, 10 green; 1 blue, 4 red, 1 green
|
||||||
|
Game 30: 10 blue, 1 red, 2 green; 1 red, 8 blue, 2 green; 4 blue, 3 green; 5 green, 1 red, 3 blue; 3 green, 14 blue
|
||||||
|
Game 31: 3 red, 7 green, 6 blue; 11 red, 4 green, 2 blue; 1 green, 11 red, 8 blue; 6 green, 5 blue, 5 red; 4 green, 3 blue, 15 red
|
||||||
|
Game 32: 9 green, 1 blue, 10 red; 13 red, 7 green; 12 red, 6 green, 1 blue
|
||||||
|
Game 33: 9 green, 4 red, 6 blue; 2 red, 4 blue, 1 green; 2 blue, 11 red, 9 green
|
||||||
|
Game 34: 8 green, 6 red; 4 blue, 3 green; 6 red, 1 blue, 9 green; 10 green, 1 red; 2 red, 2 blue, 2 green; 2 blue
|
||||||
|
Game 35: 4 blue, 8 green, 8 red; 1 blue, 10 green; 5 green, 8 red; 4 green; 6 red, 1 blue, 6 green
|
||||||
|
Game 36: 4 red, 10 blue, 16 green; 18 blue, 5 red, 5 green; 16 green, 11 blue, 1 red; 6 green, 10 blue; 4 red, 9 green, 17 blue; 1 red, 9 blue, 14 green
|
||||||
|
Game 37: 1 red, 13 green, 5 blue; 2 red, 12 green, 12 blue; 5 red, 11 blue, 5 green; 9 green, 4 blue
|
||||||
|
Game 38: 1 green, 12 blue, 1 red; 11 blue, 3 red, 1 green; 17 red, 11 blue; 8 red, 2 blue
|
||||||
|
Game 39: 11 blue, 12 red, 1 green; 1 blue, 1 green, 4 red; 3 green, 6 blue, 3 red
|
||||||
|
Game 40: 1 blue, 1 red; 9 green, 2 red, 2 blue; 9 green, 3 red; 8 green, 4 blue, 4 red; 3 green, 3 red
|
||||||
|
Game 41: 7 blue, 8 red, 3 green; 4 red, 7 green, 1 blue; 5 blue, 6 red, 5 green; 4 blue, 9 red; 2 green, 9 blue, 5 red
|
||||||
|
Game 42: 8 blue, 17 green, 7 red; 6 red, 11 green, 13 blue; 7 red, 3 blue, 14 green; 2 red, 12 blue, 2 green; 18 green, 8 red; 10 green, 5 blue
|
||||||
|
Game 43: 5 green, 9 red, 3 blue; 3 red, 5 green; 6 green, 1 blue, 10 red; 8 blue, 1 green, 2 red
|
||||||
|
Game 44: 1 red, 5 blue; 4 green, 6 red, 2 blue; 12 green, 8 red; 4 blue, 2 red, 9 green; 1 blue, 5 green, 3 red
|
||||||
|
Game 45: 9 blue, 5 red, 6 green; 10 blue, 7 green, 8 red; 1 red, 1 green, 10 blue; 2 red, 1 green, 11 blue; 11 red
|
||||||
|
Game 46: 14 blue, 8 green, 2 red; 10 green, 8 blue; 7 blue, 12 green; 14 green, 10 blue, 2 red
|
||||||
|
Game 47: 5 blue, 7 green, 1 red; 5 blue, 5 green, 3 red; 2 red, 8 green, 3 blue; 2 red, 2 green
|
||||||
|
Game 48: 2 red, 2 blue, 1 green; 1 green, 1 blue, 3 red; 1 blue, 1 red; 3 green, 8 blue
|
||||||
|
Game 49: 7 red, 2 blue, 8 green; 8 red, 4 green; 2 blue, 4 red, 8 green
|
||||||
|
Game 50: 9 red, 4 blue, 10 green; 11 red, 7 green, 4 blue; 4 green, 16 red, 2 blue; 13 red, 9 blue, 3 green; 1 red, 6 blue
|
||||||
|
Game 51: 8 blue, 2 red, 3 green; 2 blue, 2 red; 4 blue, 1 green; 1 red, 2 blue, 2 green; 5 green, 6 blue, 1 red
|
||||||
|
Game 52: 12 blue, 8 red; 11 green, 9 red, 11 blue; 8 blue, 5 green, 8 red; 3 red, 11 blue, 11 green; 12 blue, 6 green, 5 red; 10 red, 8 green
|
||||||
|
Game 53: 9 green, 6 red, 3 blue; 4 blue, 5 green, 3 red; 11 green, 5 blue, 2 red; 4 red, 9 green
|
||||||
|
Game 54: 13 blue, 8 green; 15 blue, 3 red, 7 green; 8 green, 1 blue; 8 blue, 3 red, 6 green; 3 red, 1 green, 12 blue; 9 green, 3 red, 2 blue
|
||||||
|
Game 55: 2 red, 1 blue, 2 green; 4 blue, 3 green, 1 red; 4 red, 7 green, 4 blue; 7 green, 3 red, 1 blue; 2 blue, 4 green, 1 red; 5 blue, 1 red, 4 green
|
||||||
|
Game 56: 14 green, 1 blue, 4 red; 3 red, 1 blue; 10 red, 8 blue; 8 red, 7 blue, 3 green; 3 green, 12 blue, 4 red; 7 red, 2 green
|
||||||
|
Game 57: 7 blue, 8 green, 6 red; 7 green, 5 blue, 3 red; 2 red, 8 blue, 9 green
|
||||||
|
Game 58: 7 green, 8 red, 3 blue; 7 red, 5 blue, 9 green; 4 blue, 3 red, 9 green; 1 green; 5 green, 2 blue; 5 blue, 7 green, 2 red
|
||||||
|
Game 59: 2 blue, 10 green; 8 blue, 10 red, 1 green; 1 red, 10 blue, 7 green; 2 red, 7 blue, 1 green; 5 green, 3 blue
|
||||||
|
Game 60: 1 green, 2 blue; 5 red, 2 green, 2 blue; 2 green, 3 red
|
||||||
|
Game 61: 3 green, 2 red; 10 green, 7 red, 2 blue; 8 green, 2 blue; 5 green, 3 red, 1 blue; 12 green, 1 red; 1 blue, 13 green, 6 red
|
||||||
|
Game 62: 11 green, 2 red; 3 blue, 3 red; 2 blue, 1 red, 10 green; 11 green, 3 blue
|
||||||
|
Game 63: 7 blue; 7 red, 1 green, 8 blue; 5 red, 14 blue, 1 green
|
||||||
|
Game 64: 2 green, 12 blue, 1 red; 18 blue, 10 red; 9 blue, 2 green, 13 red; 1 red, 1 green, 15 blue
|
||||||
|
Game 65: 6 blue, 8 red, 8 green; 2 green, 9 red, 9 blue; 3 green, 9 red, 1 blue; 10 red, 4 blue, 2 green; 7 blue, 5 red, 5 green
|
||||||
|
Game 66: 14 red, 3 green, 9 blue; 3 blue, 7 green, 12 red; 5 red, 8 green, 1 blue; 12 red, 5 green, 4 blue; 5 green, 14 blue
|
||||||
|
Game 67: 1 blue, 9 red, 7 green; 12 red, 9 green, 1 blue; 13 red, 4 green, 2 blue; 1 red, 1 blue, 5 green; 10 red, 2 blue
|
||||||
|
Game 68: 12 green, 2 red; 1 red, 4 green, 7 blue; 3 red, 4 blue, 14 green; 6 blue, 6 green; 7 blue, 4 green, 3 red
|
||||||
|
Game 69: 2 green, 17 blue, 9 red; 6 blue, 3 green, 4 red; 11 blue, 4 red, 6 green
|
||||||
|
Game 70: 11 blue, 10 red, 12 green; 9 red, 10 blue, 5 green; 2 red, 3 green, 9 blue; 5 green, 6 blue, 6 red; 12 green, 8 red, 10 blue
|
||||||
|
Game 71: 7 blue, 3 red; 1 green, 11 blue, 1 red; 1 red, 5 blue, 1 green
|
||||||
|
Game 72: 9 red, 7 blue; 1 green, 6 blue; 15 red, 6 blue; 5 red, 4 blue; 4 blue, 4 red, 1 green
|
||||||
|
Game 73: 10 green, 4 red; 1 green, 5 red; 3 red, 1 green; 1 blue, 9 green, 6 red
|
||||||
|
Game 74: 6 red, 3 blue, 8 green; 5 green, 9 red, 1 blue; 1 blue, 1 green, 2 red
|
||||||
|
Game 75: 2 blue, 3 green; 3 blue, 7 green, 1 red; 6 green, 1 red; 5 green, 1 blue; 7 green, 3 blue
|
||||||
|
Game 76: 4 red, 2 blue; 1 green, 7 red; 2 blue, 3 red; 1 green, 1 red, 1 blue; 4 red, 1 green
|
||||||
|
Game 77: 18 green, 19 red, 11 blue; 1 blue, 18 red; 5 blue, 10 red, 16 green
|
||||||
|
Game 78: 3 red, 8 blue, 1 green; 2 red, 3 blue; 1 green, 6 red, 12 blue
|
||||||
|
Game 79: 5 red, 4 green, 9 blue; 3 blue; 4 red, 5 green, 2 blue; 7 blue, 5 green, 8 red; 5 red, 6 green; 7 blue, 5 green
|
||||||
|
Game 80: 8 green, 11 red, 3 blue; 15 red, 4 blue, 8 green; 6 green, 14 red
|
||||||
|
Game 81: 11 green, 5 red; 7 green, 14 blue, 4 red; 7 red, 8 blue, 2 green; 10 red, 3 green, 18 blue; 3 red, 1 green
|
||||||
|
Game 82: 2 blue, 5 red; 3 green, 5 red, 7 blue; 3 green, 4 blue, 2 red; 10 blue, 2 green, 2 red; 8 blue, 2 red; 3 green, 3 red, 7 blue
|
||||||
|
Game 83: 7 red, 12 green, 1 blue; 5 blue, 17 green, 5 red; 9 red, 3 blue; 2 blue, 1 red, 20 green; 5 red, 6 blue; 2 blue, 3 red, 11 green
|
||||||
|
Game 84: 1 blue, 7 red, 6 green; 6 red, 8 green, 10 blue; 8 green, 1 blue, 6 red; 8 red, 4 blue, 6 green; 3 red, 12 blue, 8 green; 3 red, 2 blue, 7 green
|
||||||
|
Game 85: 1 blue, 1 green, 8 red; 9 blue, 9 green, 2 red; 10 green, 12 red, 7 blue; 7 green, 2 blue, 7 red; 7 red, 3 green; 11 red, 9 blue, 5 green
|
||||||
|
Game 86: 4 blue, 8 red; 4 red, 3 green; 7 blue, 12 red, 4 green; 4 green, 8 blue, 3 red
|
||||||
|
Game 87: 6 blue, 19 green, 5 red; 20 green, 5 red, 5 blue; 8 red, 3 blue, 9 green; 11 blue, 7 green, 7 red; 17 green, 11 blue
|
||||||
|
Game 88: 1 green, 2 red, 5 blue; 2 blue, 11 green; 3 red, 3 blue, 6 green; 4 blue, 2 green, 1 red; 8 green, 4 blue
|
||||||
|
Game 89: 19 red, 15 green, 10 blue; 17 green, 1 red, 4 blue; 13 green, 10 blue, 15 red
|
||||||
|
Game 90: 3 blue, 1 red; 4 blue, 1 red, 1 green; 4 green, 3 red; 4 red, 4 green, 5 blue; 2 green, 3 blue; 4 red, 2 green, 4 blue
|
||||||
|
Game 91: 8 red, 4 blue, 16 green; 17 green, 5 blue, 4 red; 10 green, 6 red; 11 red, 7 blue; 14 blue, 4 red
|
||||||
|
Game 92: 1 green, 3 red, 1 blue; 2 blue, 2 green, 5 red; 2 blue, 8 red; 1 blue, 2 green, 14 red; 3 red; 1 blue, 9 red
|
||||||
|
Game 93: 11 blue, 7 red, 8 green; 8 red, 6 blue, 5 green; 4 blue, 4 green, 6 red
|
||||||
|
Game 94: 2 green, 1 blue; 5 green, 5 red, 4 blue; 7 green, 2 blue; 5 red, 1 green, 3 blue; 2 blue, 1 green, 5 red; 1 red, 3 blue, 5 green
|
||||||
|
Game 95: 3 red; 7 green, 4 red, 7 blue; 5 red, 5 blue
|
||||||
|
Game 96: 3 red, 5 blue, 1 green; 3 blue, 14 red, 2 green; 7 blue, 3 red, 2 green; 15 red, 5 blue
|
||||||
|
Game 97: 17 red, 8 green, 6 blue; 8 blue, 9 green; 4 green, 18 red
|
||||||
|
Game 98: 9 blue, 2 green; 4 red, 6 blue, 3 green; 2 red; 14 red, 12 blue
|
||||||
|
Game 99: 4 red, 3 green, 3 blue; 2 red, 2 blue; 7 green, 3 blue; 5 red, 2 green
|
||||||
|
Game 100: 5 green, 7 red, 4 blue; 11 green, 9 red, 8 blue; 2 blue, 12 green
|
||||||
140
src/bin/sources/part03.txt
Normal file
140
src/bin/sources/part03.txt
Normal file
@@ -0,0 +1,140 @@
|
|||||||
|
.............65..................998.........453...................................845..773.........................307....527...........541
|
||||||
|
............*..........125.......*...331......*.....................30.76......./...*....*..861.......*.........298*......*.........700.....
|
||||||
|
................942.......*...874...*......407...558............752......*196.274.240.345...*.....-..105...................164...........466
|
||||||
|
....+............&.....593...........516............-....=.....*....74.....................377..157................128...........175*.......
|
||||||
|
....314.750......................497...........258.....549...70.....*....745.....289*418.................351........../..............839....
|
||||||
|
..........*.......786......283......*366..........*...............899.....*......................652.......@...219..........................
|
||||||
|
........468..=249..........*..........................866.797*960..........234.......252-.686.......=............$...................&......
|
||||||
|
..386.............582....681...52....$369.+.......969..+........................276........*.................873.....824.......%627..51..25.
|
||||||
|
.....-......835..@....*....................101.......*.......444...........587...*..33....847...............&.......=.......................
|
||||||
|
...........*.......513.45.125......................883.......*...............=.988.$.............962.*595.....................*....674.534..
|
||||||
|
........180.........................891*129..957...........+.584......................291*59..71*..................../.....707.646....*.....
|
||||||
|
...................=530.....................*.......610..790........314...$....991..................231*926....29..870.264..................
|
||||||
|
......132-..............#..............$....93.........*...............*...537...$.139..........70...............&.....................131..
|
||||||
|
...36.......#.514%.......99..684.......21.........852.886../...191.....892...........*....456..-.....172...../..............................
|
||||||
|
.....*...508................&......615...........$.........964....*...................627...............*242.945..........457.....512..880..
|
||||||
|
.....211.............430...........*.......%..........702.........243..747.......506................24.......................*873....*......
|
||||||
|
.........................988..570........-..72....726*.................-........=.....340............*.555....526......................&....
|
||||||
|
........&..........#928....&../.......785..............971..585......................+............860....%...#..........628.....=....952....
|
||||||
|
..165..541......................822........930.........*...%............*737..................940..............#561......=...=..685.........
|
||||||
|
....+...........248..-...40...................*521....897............698.................................558...............52........-......
|
||||||
|
..................*...19..%...........674.....................110.........................*296.............*...........78#.........495......
|
||||||
|
................753.....................*..............@.....#....199......353.604.....737.......483.366....242....720......................
|
||||||
|
...407....973#...............352.........397............144......*............*............799....%..................#....845.......539.....
|
||||||
|
......*................*........*..............643............443..726....=......*939..439*.....*....478$.....#.............-........-......
|
||||||
|
...165.........3....599.943..840..424..268.389...*..........=.........*83.827.318............135.55........924..535*...........%............
|
||||||
|
.......163........@...............*..........+..688.......529.........................858............137............681.347...187...........
|
||||||
|
...541....*.299.340.....@..+645.492...................................#....830*.................897.*.......782$...................352......
|
||||||
|
........740.%........549..............500...-..899......671=.807.....334.......313...26........+....366.701.............330........*........
|
||||||
|
....125.....................928../......@..243...................225......182........=..................*................&.......346........
|
||||||
|
......%....814.665.........*......573.....................69.......%.........*484.................+...64.........910.........273.....450....
|
||||||
|
...............*...........383.........433.................*...........#22...........62..#569....396........736.....*708.......&....*.......
|
||||||
|
.383.........774......................*.....#............&..265.............812......*...............305*....*...................657........
|
||||||
|
.....467.392.......936...806.......373...929...463....484.............337....%...415..465.@..............154..326...........................
|
||||||
|
....../..*.....+.......=....*.....................*........517*24.-.................*.....297.......................................*.......
|
||||||
|
..........599..820.....342.438...........482...200................49..........-312..847.............548...$.....581..909.........879.616....
|
||||||
|
............................................&................&475........................528...578....@..211......*....%....791.............
|
||||||
|
..............802..............250....................................*229........923......#.....*.................635......................
|
||||||
|
552......762..#...................$..%......940......651...........461........900*.............654...673....................*437..993.......
|
||||||
|
..........$.............52............602......%........*...105..$.................938...431.............................157......#...310...
|
||||||
|
...581../...............$.........309.......*...........846.../..718..........568@..*.......*...261...............22.........-852......*....
|
||||||
|
......*.969.349..354.....................156.666....@................-378..-................632....*..........363*........./......976.871...
|
||||||
|
.....60.....*.......*....10...@..684#..............225....248.............904..........638$......896....%.................906.926...*.......
|
||||||
|
.............602.....958.....103..........703..........................$.........456.........704.........149...785.2=...........*.87...95...
|
||||||
|
....228..589.................................*...770..588...........411..902..................................................645...........
|
||||||
|
.......*....*...135.......*...909.857.207-.602.....*.....*......=.........*..........358..............535......*................../235......
|
||||||
|
.....126..747............513..*.....$...........125.....389..956.....164...797........*.....807..34......%..754.734.....140..............969
|
||||||
|
.................919*213.....232............530..................583...................986....*...*.................186...=.%881..859.......
|
||||||
|
...937......881..........774......*345.......*......894#...644*.....$....588.................520..323..218...%...../..................#.....
|
||||||
|
.....-.401.*.......359.....*....19.........728.................670.................674.511*...........*......580........203%.........470....
|
||||||
|
........*..610......-.......836.....299.........832..........................690...........528.......21.....................................
|
||||||
|
......991......#.......365................447....#...857...227.605.........%.-...599.........................*602...529...........10........
|
||||||
|
..........+471..443.....+................*..........*......=......*252..417.....*.....653.............412.727.......*.....634.304.*.....42..
|
||||||
|
.....494......................&...........552.....852...................................*....550*520............80.174.............437......
|
||||||
|
......-.....+...536.........$..969............519.......448........251..............$...794.....................*.........701...............
|
||||||
|
..373.....930.....*......298.............76+.....*...@.....*......*................856......@899..............96..40......*.......574.......
|
||||||
|
.....*........518..575...........957.112.......479.579....288..306...+.......$817........................785.....*...9.......127..#...=907..
|
||||||
|
...698.......*..........329.....$....*......92........................203..........168.....................*..346....*..........*...........
|
||||||
|
.......470........68/..............263.....*.........337..................433............................666........92......20..784..978*194
|
||||||
|
.........%................465-.............297..............193.259.............................................17.........*................
|
||||||
|
.............*.................................................*.......*............580.......763.......@.........*747....519....628..647...
|
||||||
|
......900.....261..........722.553.....284*513......*429..............155....&....$....%..914...*......468.......................$......*...
|
||||||
|
........#........................................932......413....414......829.....528.......+...527................382...835...........744..
|
||||||
|
....918......103*37..207...676.297........422..............*........*993................140...................945.#.......*...686...........
|
||||||
|
.......................$.../...*......423....*..459=...&....602..........................................................978..*.............
|
||||||
|
.........&........414.........41.........*..673......543..........848*276.......388%..792...*....700*152......596/....*........791...%...485
|
||||||
|
.....615..55.........+......+........%.859...............@363..........................*..858.........................556............748....
|
||||||
|
......../....................775..467..........700..............*492.....$..862.......266..........319............88..........724........291
|
||||||
|
........................942.............530....*.....#.259...872........157./...287...........#687..*..../...........438$........*..233.....
|
||||||
|
............../...641........534.546...+......802.847.....*........................*...................13.......................677..*......
|
||||||
|
....604.......158........818....*.........................947................24....516.......&...332...........573...................697....
|
||||||
|
...%....2................*............/..........................162....27.....$.......#860.284.....*540..309...+...........................
|
||||||
|
........................678........337........105.469.......49.....................641.....................*......644$..............128.....
|
||||||
|
.....................%..................386.............203*.....497.404.............................795..................670.........*.....
|
||||||
|
....+..............369......814.........#.......359...........-.....*.......+.......41...........353....*263.........-.........700....102...
|
||||||
|
...862......430........=.....*............*682..............195.456..........379......+...........*..........790...987......................
|
||||||
|
....................565................689......................*...296.........................599..689.829...*..............$....910......
|
||||||
|
513......721.................................645*343.105........1....*..............=349.............&.....%...785..........832../...*......
|
||||||
|
........=............50*15..............272............*....242...306...........................................................159.59......
|
||||||
|
..............190...............88#.%.........229......310....#.......330...........149*.........89.......333.....771.....701..........522..
|
||||||
|
....354.........+....................561........*..........73.....336*....$40..906......16.........-.......+.......*........*...563....*....
|
||||||
|
.......*.............948..844......#.......556...51.........*......................=...........744.....361...$.....15.644=..9...........686.
|
||||||
|
........535.796.....*......#......907.........%......286...918....714..............688.232.................51......................284......
|
||||||
|
............*........755................@255.........*...........*......=.292............./.........453.........913................$....810.
|
||||||
|
............354...................................361..406*802...112..461............162.....$......=......991/./........&..................
|
||||||
|
.......+............#892.......654/....705..........................................*........385.........................506....*506........
|
||||||
|
.444/.482.................................*.....................619.....19*239.....187.993......................*............718........884.
|
||||||
|
..............906.182..473............/..58...407.591.583...=.....%......................*.......$......1....310.196....................*...
|
||||||
|
......820@......%....@.%.........343..61........*.......-.663.............490.....209..921....288.......*..............484...956.........324
|
||||||
|
...+.........................189*.............963...878.......782..955....%..........*................72...........406*......*....-.........
|
||||||
|
...188......861....239.818..........................*.................*......7....892.............705....197.20*..........204......429......
|
||||||
|
........*....*......./....#............*236.425*147..816..............739.....*........%..../.....*.............473...455...................
|
||||||
|
.....718.939..679........................................182.281@...........597.......360..324.161.......8*671...............971............
|
||||||
|
....................+318.698*778..691......648*806..387$../..............*......174/................+133............25......................
|
||||||
|
.............620*..................*...986...............................587.....................................15......264%..128.....998..
|
||||||
|
.......%436......267..557%..#827.......................746%.48.411*309.............+.....547......-.............*.................*....*....
|
||||||
|
..690..........#.................724....*.....772...........+..........787........462...+........89.#777.....794...-.........120.662....429.
|
||||||
|
....&....$575.874........450.379...%.120.944.....*....10......378*888.%..........................................542........................
|
||||||
|
..................388.....+.....*..............108........243..............468...........363......132....-....&...............*....391......
|
||||||
|
.....*.............%....$.....554.494....784.........310.&............458...%........753*..............217...174..23*108...853.233...*......
|
||||||
|
..636.425....343.........455........$........87........*.................-........%..............823.....................-...........898....
|
||||||
|
................*728.747.......770.......913.*....855.159.....&618...*.............779...94-..........375/.318*410...324.209................
|
||||||
|
........................*399......*.......=...905.*.......24........192.......760................785...................#...............468..
|
||||||
|
.......674.414....108/.......498..443.............660.......*................*....................*....980..................................
|
||||||
|
.462.........*..............................654..............669...........427......$..............14..*...921.......897.............862....
|
||||||
|
...@.......292..370....751....639....................403..............74.......537.504.130.............779..&....89..*....615.423.%....*....
|
||||||
|
...............+..........*........958......23...160./..................*228.....*........*....66.....................378....*....735.......
|
||||||
|
......#...............&68.584..125.$....898..+....*.........130.................927.....75......*....613....414.............................
|
||||||
|
....909..968...................$.....=...#......@.935..............966.......................374.......*.....*...&......73.......*611.=888..
|
||||||
|
............*231...................93.........157..............252..%..900.869...269................550...352..123......*...7.888...........
|
||||||
|
.......833%..............277%.+860............................*...........*......*............973....................697...#........765..153
|
||||||
|
..............920@..569.........................499................44..........36....................406.98...+..295..........94*....@......
|
||||||
|
.....28...............*.413......-333......984.*............984...........878.............*.................958.....*43...829....746........
|
||||||
|
......*............320...@...799.......696..$..211...%.......+.........%...*......232$.915.....209...........................*........510...
|
||||||
|
.......429.....................*........$...........624.736..........342....960..................*..................186....402..............
|
||||||
|
....16.........838*............477....&...................%...............................977..996..........255.212.........................
|
||||||
|
245........88......209.................283.920*456...............410.............$353.....%....................*....................846.....
|
||||||
|
.......699..*....................................................*...580......................659*......=..................184....#..#......
|
||||||
|
..890...*...485..........=......................................16...*......589...................754.802........485..%...-......784...+....
|
||||||
|
.......28.........303....405.@442.......768......476..273*961......843.....*.....161....813.....................*....470..............111...
|
||||||
|
.............#...*...........................303.*..........................255.+........&.......326*309.+814.469..............5............
|
||||||
|
....208.....910.514..148..261..334.......$...*...674..597..........................*439......36.....................=876...468*.............
|
||||||
|
....*....*..........*........*...@.....205...525.....*.....863..190.......115................./..@..+17......731................626.....&...
|
||||||
|
..984....994.......396.......587....................558....*..............................112...364.........................599*.......824..
|
||||||
|
......./...............................................................935*56........146................#......%............................
|
||||||
|
.......563..................896....216*192.......................588...........423......*......657...894..678...57............&.....813*....
|
||||||
|
............#......186.-....*...................796.916........./..........810...*...532..........@.......*........394.......885........871.
|
||||||
|
..../.......484...*....101.208........%..42........*......623.....*592.....*.....572.......545.........677.....*...*........................
|
||||||
|
.479....25........535...............627..*...........652.....+.808.......926.522............*...............671.33.499.............514......
|
||||||
|
..........*............951*472............215.......*.....................................451.....152...........................58...%...903
|
||||||
|
..........178.....=....................64......22.244...898.................514.......460........-......947..........823....368...%.........
|
||||||
|
...................120.....=.....289...*........*.......................723..../...........................*....368.................349..304
|
||||||
|
..........................402...........914..707.............630/...*.............................419.....654......*..............*.....*...
|
||||||
|
......981.131....809*755...........318*.............248...........#.195........338..........23....*...............395..223.....626.498.681..
|
||||||
|
.....*.....................+.271.......457.........*......384...633.......#.....*...638..46........144........@...........*.................
|
||||||
|
...915....................14../..............595..806......*...............523.603..&....*....................165.824.....789.....347$......
|
||||||
|
.................*47.............761.265.150................967........565............=...296......-..............*...........671......379..
|
||||||
|
..............967......./.&197......*.........=.....................&................660..........292.............993...........=..581..#...
|
||||||
|
......................279........+.........755........@..............712..........*...................827....../...................*........
|
||||||
|
...........$.....*................115..................400................=......1.292..@602..=.................321..............728........
|
||||||
|
..579..410..3..44.291..........................538..................148....873.................461....................................722...
|
||||||
6
src/bin/sources/part04.sample
Normal file
6
src/bin/sources/part04.sample
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
Card 1: 41 48 83 86 17 | 83 86 6 31 17 9 48 53
|
||||||
|
Card 2: 13 32 20 16 61 | 61 30 68 82 17 32 24 19
|
||||||
|
Card 3: 1 21 53 59 44 | 69 82 63 72 16 21 14 1
|
||||||
|
Card 4: 41 92 73 84 69 | 59 84 76 51 58 5 54 83
|
||||||
|
Card 5: 87 83 26 28 32 | 88 30 70 12 93 22 82 36
|
||||||
|
Card 6: 31 18 13 56 72 | 74 77 10 23 35 67 36 11
|
||||||
188
src/bin/sources/part04.txt
Normal file
188
src/bin/sources/part04.txt
Normal file
@@ -0,0 +1,188 @@
|
|||||||
|
Card 1: 95 57 30 62 11 5 9 3 72 87 | 94 72 74 98 23 57 62 14 30 3 73 49 80 96 20 60 17 35 11 63 87 9 6 5 95
|
||||||
|
Card 2: 65 16 99 4 48 52 84 7 26 12 | 86 7 71 12 52 4 84 15 48 20 16 3 10 87 56 99 26 66 88 65 98 32 14 51 59
|
||||||
|
Card 3: 19 70 1 34 10 79 23 58 64 68 | 95 14 64 53 19 63 83 46 77 75 3 12 70 65 22 13 66 34 23 89 94 50 69 79 68
|
||||||
|
Card 4: 27 57 62 6 53 68 97 35 23 8 | 23 2 81 62 19 8 65 27 93 53 57 67 6 91 68 97 16 30 12 96 15 35 25 55 43
|
||||||
|
Card 5: 49 95 30 21 42 63 92 97 89 93 | 35 34 46 89 93 29 42 21 63 49 77 30 95 27 28 62 72 32 97 54 75 56 4 58 92
|
||||||
|
Card 6: 7 39 29 54 34 40 63 64 32 23 | 88 4 54 73 32 18 36 31 19 35 61 94 28 40 23 41 96 59 14 48 77 29 39 21 33
|
||||||
|
Card 7: 20 58 79 66 51 65 72 27 62 67 | 37 7 90 62 3 17 88 58 86 28 55 42 15 20 79 94 38 92 76 41 30 93 25 24 14
|
||||||
|
Card 8: 3 83 96 15 95 72 63 87 74 78 | 16 74 6 49 15 87 46 3 64 90 82 85 2 78 32 9 97 96 70 95 63 72 54 83 38
|
||||||
|
Card 9: 40 74 17 75 12 97 71 15 30 83 | 13 21 15 12 8 81 50 7 44 67 6 40 30 76 22 75 42 79 5 97 83 60 71 47 74
|
||||||
|
Card 10: 47 96 36 45 84 14 65 7 69 38 | 36 38 85 14 87 95 7 24 69 29 68 65 26 94 84 78 83 45 98 9 2 20 93 96 47
|
||||||
|
Card 11: 22 5 16 86 91 96 27 39 8 30 | 14 98 84 51 11 5 23 36 40 81 82 78 13 2 43 39 42 68 34 71 10 38 61 70 46
|
||||||
|
Card 12: 57 95 65 48 50 46 69 61 58 70 | 64 69 52 84 93 65 61 37 25 22 31 6 46 83 50 48 75 58 59 98 95 70 19 51 57
|
||||||
|
Card 13: 67 63 56 28 11 81 43 60 93 57 | 61 67 82 60 7 11 98 78 50 33 84 64 74 63 28 15 56 66 39 57 69 54 65 8 12
|
||||||
|
Card 14: 30 97 48 84 86 1 59 83 8 44 | 70 94 38 62 71 79 47 99 68 93 67 15 33 57 60 72 50 31 88 20 82 40 18 63 29
|
||||||
|
Card 15: 7 2 46 28 61 63 17 95 32 47 | 56 97 17 93 36 78 16 25 18 33 61 90 10 55 82 26 2 69 43 22 96 37 64 74 95
|
||||||
|
Card 16: 45 90 36 48 81 64 68 58 4 66 | 31 36 34 41 46 56 2 74 50 57 93 86 22 60 43 24 12 17 73 79 15 63 82 97 32
|
||||||
|
Card 17: 1 82 47 86 6 33 52 51 98 91 | 88 98 26 33 82 93 16 45 65 68 47 96 39 83 14 86 61 71 75 90 3 54 59 77 9
|
||||||
|
Card 18: 43 73 13 32 98 11 15 12 97 99 | 83 15 60 62 95 36 98 16 51 79 20 24 73 46 5 67 12 32 11 84 89 23 93 59 74
|
||||||
|
Card 19: 54 93 71 65 66 56 26 97 33 24 | 67 24 89 17 99 18 5 54 26 14 57 10 3 33 91 94 16 80 97 49 12 46 19 75 38
|
||||||
|
Card 20: 65 10 75 93 72 62 29 69 59 66 | 58 55 56 87 66 88 7 34 36 62 4 35 67 90 33 52 99 17 32 68 80 79 40 48 31
|
||||||
|
Card 21: 93 75 39 12 21 77 99 46 4 24 | 39 19 98 59 43 14 28 9 89 81 1 5 63 87 48 95 41 36 29 27 44 15 50 17 18
|
||||||
|
Card 22: 78 39 74 11 41 24 9 33 68 45 | 41 66 29 79 15 90 62 60 95 69 57 55 81 33 20 89 76 65 56 77 61 18 88 75 19
|
||||||
|
Card 23: 64 16 33 77 80 89 90 50 57 4 | 46 94 45 42 82 61 67 3 76 74 96 79 7 70 73 97 11 34 35 72 55 51 36 12 13
|
||||||
|
Card 24: 40 13 83 79 42 70 26 33 7 12 | 95 17 5 74 68 28 46 21 96 43 73 47 18 86 54 88 82 61 85 51 11 9 56 20 75
|
||||||
|
Card 25: 97 54 33 84 85 49 4 26 25 67 | 22 41 72 84 25 16 85 8 83 62 15 33 97 17 38 67 69 51 45 77 28 87 24 54 4
|
||||||
|
Card 26: 54 22 60 99 15 96 80 3 5 64 | 96 65 54 38 60 87 8 15 80 10 3 32 22 56 43 5 44 14 78 18 97 64 25 63 99
|
||||||
|
Card 27: 88 93 30 77 33 46 38 66 7 20 | 96 75 30 77 83 76 54 46 15 66 38 88 55 40 22 21 34 42 29 20 71 16 28 61 18
|
||||||
|
Card 28: 48 85 39 25 47 80 98 33 68 66 | 50 82 40 60 84 46 29 51 25 47 11 22 58 64 36 2 63 92 80 15 72 27 37 98 10
|
||||||
|
Card 29: 85 92 67 13 70 60 9 35 18 98 | 44 16 66 33 81 56 58 73 64 85 39 40 49 63 23 17 19 1 28 62 2 65 10 68 11
|
||||||
|
Card 30: 15 64 30 28 6 97 69 38 17 79 | 92 50 33 24 85 6 38 44 91 28 35 58 90 97 39 79 64 80 84 22 15 66 2 45 17
|
||||||
|
Card 31: 7 74 79 40 62 55 16 48 59 97 | 31 70 34 85 23 17 4 92 12 66 1 50 43 87 27 64 11 28 26 47 94 2 36 15 39
|
||||||
|
Card 32: 97 95 38 61 7 22 36 94 47 4 | 21 37 44 88 77 33 11 12 91 27 80 67 25 83 17 45 89 61 98 40 59 76 96 71 1
|
||||||
|
Card 33: 15 35 9 39 25 62 57 19 81 47 | 64 57 71 56 35 25 33 1 76 97 48 84 44 79 82 39 19 74 78 59 14 49 81 29 11
|
||||||
|
Card 34: 97 3 81 82 28 40 35 67 38 85 | 36 76 21 89 38 34 43 10 85 9 99 83 68 94 47 19 17 91 41 26 20 30 63 25 69
|
||||||
|
Card 35: 43 49 58 92 57 71 56 28 33 3 | 32 1 70 43 29 93 54 63 58 27 14 28 51 31 81 57 25 50 87 90 82 73 97 7 12
|
||||||
|
Card 36: 18 85 61 97 29 25 66 28 11 62 | 44 26 46 65 83 59 30 66 68 47 90 93 15 84 9 7 72 1 95 87 3 20 23 81 86
|
||||||
|
Card 37: 97 22 74 4 43 78 76 8 26 1 | 4 93 24 5 80 37 48 12 59 32 50 71 66 69 52 23 34 25 57 89 51 99 41 56 63
|
||||||
|
Card 38: 20 57 93 41 87 71 76 29 33 66 | 63 56 49 11 64 2 62 68 82 8 67 81 41 4 78 17 85 97 69 35 19 47 30 95 65
|
||||||
|
Card 39: 6 81 87 68 29 23 76 9 44 33 | 74 71 60 82 98 72 85 57 7 96 84 30 19 3 35 12 22 50 15 26 94 65 62 61 83
|
||||||
|
Card 40: 96 61 74 3 10 54 58 86 97 87 | 16 37 57 5 72 93 74 45 88 67 97 54 69 2 71 58 46 96 87 44 10 20 86 28 3
|
||||||
|
Card 41: 28 83 7 40 32 56 82 70 14 22 | 82 81 37 73 76 65 35 56 17 40 83 29 39 6 80 61 25 28 31 32 1 38 42 85 8
|
||||||
|
Card 42: 16 47 55 93 99 1 7 72 12 40 | 78 2 26 88 9 98 40 47 61 77 23 1 66 27 55 5 72 67 50 12 85 83 90 71 25
|
||||||
|
Card 43: 17 94 80 60 24 12 20 66 99 41 | 53 69 76 97 15 54 29 73 98 33 30 45 24 19 70 66 16 78 6 90 61 96 32 89 46
|
||||||
|
Card 44: 16 20 87 88 90 27 69 81 79 70 | 52 70 85 7 13 87 34 26 60 82 15 88 69 79 58 62 75 44 42 49 48 11 97 16 27
|
||||||
|
Card 45: 72 9 25 20 48 79 15 2 49 67 | 4 3 60 85 48 73 15 98 25 84 95 80 22 7 58 72 44 67 79 20 40 70 1 29 13
|
||||||
|
Card 46: 86 95 61 42 30 43 1 72 19 53 | 65 88 13 2 3 30 51 7 5 19 74 25 56 50 10 32 43 85 78 61 99 12 75 42 80
|
||||||
|
Card 47: 80 62 17 58 21 95 18 65 19 54 | 23 1 28 41 80 46 18 17 35 54 19 40 43 62 96 77 45 90 13 21 12 66 52 53 65
|
||||||
|
Card 48: 52 43 23 72 73 82 9 19 60 83 | 35 29 60 57 22 46 78 39 86 27 92 90 19 71 28 44 41 40 52 79 6 50 15 82 21
|
||||||
|
Card 49: 10 19 28 81 32 46 42 8 54 16 | 42 93 82 62 95 67 59 8 87 36 28 35 38 31 75 70 96 10 56 1 54 44 4 88 24
|
||||||
|
Card 50: 12 66 62 83 81 13 2 38 85 57 | 73 95 59 70 54 93 71 35 25 75 82 46 14 21 76 32 8 81 68 42 79 44 34 41 55
|
||||||
|
Card 51: 62 51 82 74 97 93 49 94 76 58 | 4 46 69 1 33 38 68 89 59 91 57 67 3 92 19 53 77 50 94 48 62 26 98 9 81
|
||||||
|
Card 52: 52 51 23 12 82 32 96 89 47 55 | 12 4 60 90 17 35 52 64 94 43 27 14 9 25 6 66 41 68 38 56 37 19 55 85 69
|
||||||
|
Card 53: 23 59 46 4 62 48 71 20 50 1 | 41 77 25 16 35 34 44 81 65 17 78 15 42 12 72 55 57 3 58 88 40 95 66 13 74
|
||||||
|
Card 54: 43 96 23 40 48 38 10 21 8 20 | 98 88 67 99 97 56 54 1 29 57 37 69 63 32 89 35 41 85 11 49 74 36 28 65 91
|
||||||
|
Card 55: 9 66 49 29 54 15 36 93 50 13 | 84 79 55 53 41 8 78 89 18 40 56 61 45 7 88 63 37 4 67 85 90 28 34 51 10
|
||||||
|
Card 56: 51 99 43 34 16 30 8 36 71 88 | 99 36 8 16 71 28 43 29 61 94 92 48 77 58 51 34 88 67 47 30 54 14 66 70 68
|
||||||
|
Card 57: 46 90 29 80 82 93 4 66 57 91 | 90 57 74 20 54 42 93 60 88 80 5 78 82 51 7 29 4 55 33 89 32 12 27 63 44
|
||||||
|
Card 58: 46 16 53 11 58 63 65 93 99 36 | 22 29 59 91 79 40 95 68 67 99 88 87 13 73 54 8 49 20 16 94 9 43 47 4 98
|
||||||
|
Card 59: 57 93 76 90 32 22 30 9 98 88 | 48 93 22 33 14 92 80 3 2 17 82 54 42 63 41 74 56 87 45 52 71 35 70 32 60
|
||||||
|
Card 60: 26 74 89 84 81 10 79 99 75 11 | 86 81 64 26 54 35 66 99 84 53 89 79 13 75 24 98 60 19 94 74 5 11 49 10 23
|
||||||
|
Card 61: 51 99 9 36 82 83 40 25 97 39 | 2 82 72 65 7 17 63 28 16 84 34 56 37 81 25 13 26 50 73 51 40 94 49 8 39
|
||||||
|
Card 62: 98 72 92 16 2 68 65 61 20 78 | 89 60 42 83 20 7 64 36 77 95 63 37 39 4 74 75 25 67 9 58 49 2 87 10 68
|
||||||
|
Card 63: 17 86 72 89 44 30 21 64 36 84 | 72 30 91 27 31 50 64 7 25 9 89 84 17 86 92 71 13 63 36 2 41 28 33 94 82
|
||||||
|
Card 64: 9 71 80 49 16 90 92 17 39 45 | 53 9 30 93 7 12 98 87 45 16 67 71 90 18 17 31 42 36 39 48 47 85 19 97 95
|
||||||
|
Card 65: 76 39 34 30 80 38 16 45 46 58 | 16 79 45 51 40 67 31 49 30 22 85 63 57 34 76 80 3 48 46 36 38 58 19 55 6
|
||||||
|
Card 66: 97 57 52 42 67 92 28 6 7 73 | 55 79 71 61 94 86 83 35 72 78 4 58 10 51 73 89 68 92 42 24 69 57 91 7 43
|
||||||
|
Card 67: 99 35 28 30 61 98 51 73 4 85 | 90 34 58 69 21 59 36 97 96 98 44 47 12 15 61 29 28 42 99 51 52 71 19 40 73
|
||||||
|
Card 68: 72 30 78 60 61 91 14 73 76 47 | 46 41 40 6 94 56 16 45 60 20 33 24 43 1 88 67 62 68 2 84 29 12 4 96 74
|
||||||
|
Card 69: 14 20 41 89 85 13 98 6 33 4 | 36 99 26 58 49 55 16 68 15 52 30 35 28 21 82 57 65 56 7 37 3 20 14 47 22
|
||||||
|
Card 70: 93 18 99 57 25 81 95 4 58 37 | 24 66 67 61 34 55 85 37 78 30 75 79 3 32 83 33 10 52 69 98 20 45 2 68 44
|
||||||
|
Card 71: 47 27 78 40 34 56 59 62 26 93 | 50 18 84 99 64 10 97 22 85 20 15 19 72 31 58 89 37 6 26 44 68 60 43 21 17
|
||||||
|
Card 72: 28 18 7 3 11 94 85 44 90 40 | 59 2 49 16 27 42 72 33 50 5 92 37 88 55 95 11 62 7 52 23 41 74 98 35 30
|
||||||
|
Card 73: 1 46 31 33 20 19 97 89 15 45 | 50 77 71 24 88 87 74 95 56 44 42 70 4 75 96 25 21 11 59 47 29 35 83 2 85
|
||||||
|
Card 74: 88 55 81 82 51 18 48 12 72 19 | 41 78 28 96 83 5 33 60 3 73 53 85 22 4 50 61 98 23 32 68 34 80 49 75 36
|
||||||
|
Card 75: 17 93 50 45 57 97 39 3 87 32 | 79 87 59 15 1 71 54 37 80 85 14 93 45 3 24 50 94 74 75 64 55 97 17 76 21
|
||||||
|
Card 76: 37 19 35 66 32 28 43 68 13 86 | 68 45 91 37 33 69 35 24 1 14 58 25 52 3 50 70 62 64 94 32 49 13 28 43 21
|
||||||
|
Card 77: 5 6 46 30 74 35 48 94 26 88 | 82 55 59 35 74 92 36 26 48 5 7 98 27 42 60 94 11 71 6 33 23 30 56 25 46
|
||||||
|
Card 78: 27 81 2 26 70 83 28 75 15 82 | 47 25 73 15 36 86 93 90 46 37 1 28 75 89 49 83 2 79 81 27 9 44 82 70 61
|
||||||
|
Card 79: 35 38 41 81 18 89 9 34 55 16 | 21 31 76 69 50 45 88 63 89 70 15 96 99 8 67 42 20 59 74 19 48 37 98 10 39
|
||||||
|
Card 80: 97 65 69 37 10 86 57 41 15 31 | 17 58 2 50 45 27 33 73 96 12 29 86 60 74 89 81 51 95 37 41 75 98 38 93 20
|
||||||
|
Card 81: 12 6 42 18 14 74 61 85 47 28 | 13 49 34 78 81 75 57 11 95 3 69 27 2 42 44 76 54 4 68 48 24 53 52 20 15
|
||||||
|
Card 82: 40 27 39 47 34 78 31 79 91 12 | 63 6 76 5 50 8 86 96 99 57 82 87 7 37 95 56 28 26 77 67 45 17 51 66 30
|
||||||
|
Card 83: 38 96 19 65 28 70 54 95 62 15 | 29 26 46 50 32 18 89 93 22 24 1 52 2 39 59 86 69 56 72 58 25 70 54 7 10
|
||||||
|
Card 84: 76 89 49 56 46 1 83 64 73 40 | 19 60 49 99 18 28 54 73 32 38 97 87 2 79 8 61 12 93 35 20 52 51 58 3 21
|
||||||
|
Card 85: 77 86 68 78 37 82 93 17 15 36 | 9 19 79 80 39 8 15 54 68 27 98 50 46 41 88 12 34 47 76 93 81 7 35 85 73
|
||||||
|
Card 86: 68 22 45 20 26 79 88 44 46 90 | 84 19 67 86 49 18 21 65 23 6 57 90 75 28 51 83 4 56 26 98 38 5 3 80 63
|
||||||
|
Card 87: 43 34 86 6 75 41 38 17 22 61 | 54 95 20 36 72 28 59 90 40 50 63 81 89 30 92 32 26 78 53 42 46 15 73 51 7
|
||||||
|
Card 88: 15 32 22 2 63 17 62 94 99 83 | 44 25 22 16 58 54 67 4 92 8 75 27 41 99 53 97 76 5 51 32 78 74 73 81 45
|
||||||
|
Card 89: 67 75 27 99 94 7 57 15 40 65 | 61 42 96 13 53 56 3 63 70 41 69 28 86 11 54 16 34 22 31 76 14 5 43 79 77
|
||||||
|
Card 90: 10 49 37 75 89 18 62 16 65 13 | 8 67 79 40 27 23 15 56 69 71 5 85 87 88 14 74 22 19 64 98 93 35 18 82 31
|
||||||
|
Card 91: 73 28 59 31 18 92 69 84 38 52 | 86 70 65 90 53 95 45 33 16 94 23 71 25 34 26 98 13 87 55 8 1 49 6 93 63
|
||||||
|
Card 92: 18 60 22 23 16 6 88 4 32 44 | 37 88 46 75 97 6 22 9 5 18 92 32 16 4 49 82 13 60 44 26 28 86 8 12 23
|
||||||
|
Card 93: 14 39 72 74 69 9 4 13 57 7 | 22 6 96 21 23 80 50 83 55 81 30 1 79 92 34 32 95 91 11 76 85 12 73 99 89
|
||||||
|
Card 94: 38 18 52 85 43 3 89 63 78 77 | 78 35 89 77 96 27 38 46 3 58 84 37 85 4 13 52 80 7 21 50 63 42 86 28 43
|
||||||
|
Card 95: 72 18 32 20 23 9 43 97 71 30 | 21 29 14 50 5 48 35 15 58 75 24 73 81 88 82 13 98 86 26 33 70 64 96 11 90
|
||||||
|
Card 96: 36 27 25 77 60 63 49 1 39 31 | 29 78 5 67 77 24 71 59 22 73 6 69 99 88 37 25 21 47 42 61 2 40 26 45 23
|
||||||
|
Card 97: 40 74 36 19 92 51 78 44 96 20 | 18 98 69 94 73 40 82 45 38 44 78 58 57 32 99 14 34 63 35 92 3 83 4 84 75
|
||||||
|
Card 98: 57 55 61 60 77 56 50 33 48 47 | 61 77 33 86 75 47 65 50 48 84 10 55 14 28 19 53 3 46 83 31 1 51 89 56 57
|
||||||
|
Card 99: 93 47 74 10 37 90 76 1 40 54 | 62 72 8 28 79 84 23 75 2 45 96 32 16 71 56 14 13 63 78 30 12 55 65 46 91
|
||||||
|
Card 100: 15 33 70 46 11 23 24 69 47 5 | 6 68 69 86 55 3 50 43 45 75 36 97 91 20 15 77 21 23 17 71 70 82 42 35 9
|
||||||
|
Card 101: 40 41 98 7 73 21 47 68 59 1 | 11 79 77 37 48 96 92 30 18 24 31 88 49 99 14 23 82 35 42 16 22 84 8 75 32
|
||||||
|
Card 102: 92 51 37 63 18 54 28 58 40 4 | 10 94 9 42 64 11 91 23 50 30 90 81 74 77 65 24 49 60 19 70 79 83 76 72 99
|
||||||
|
Card 103: 66 62 18 43 33 50 51 30 22 63 | 20 68 54 91 55 14 1 31 71 38 80 86 81 87 89 53 42 83 65 64 30 73 6 61 2
|
||||||
|
Card 104: 2 86 13 94 18 9 74 35 49 91 | 82 21 12 51 25 10 89 6 73 95 2 16 83 36 49 64 3 87 41 78 27 98 67 56 7
|
||||||
|
Card 105: 51 42 19 18 31 2 29 80 99 65 | 27 55 14 37 52 11 25 5 30 73 41 32 76 28 50 69 88 66 22 74 40 21 13 35 90
|
||||||
|
Card 106: 6 19 88 46 69 13 49 20 63 31 | 47 32 72 78 79 53 55 75 98 16 76 52 93 17 27 77 74 45 44 60 10 91 3 87 30
|
||||||
|
Card 107: 11 42 78 2 9 91 46 51 68 88 | 30 7 18 76 94 87 50 57 73 14 54 36 80 59 71 61 20 64 5 44 55 93 27 74 24
|
||||||
|
Card 108: 4 79 42 25 54 92 93 88 90 81 | 86 92 79 4 52 58 3 65 95 14 42 59 15 81 12 39 90 25 98 49 38 63 27 84 88
|
||||||
|
Card 109: 65 16 49 63 6 37 48 75 77 19 | 16 73 6 25 14 28 27 75 49 11 61 77 76 19 85 95 63 37 33 88 48 22 65 72 31
|
||||||
|
Card 110: 83 63 27 82 72 40 70 35 12 86 | 14 96 39 40 72 56 8 83 63 43 42 86 91 58 48 70 3 73 22 35 82 33 29 31 12
|
||||||
|
Card 111: 36 31 68 37 83 23 9 39 12 26 | 80 92 71 20 48 37 53 32 75 31 83 58 9 26 77 52 42 68 70 7 72 36 23 87 50
|
||||||
|
Card 112: 94 61 81 68 89 42 52 92 74 39 | 94 89 15 76 86 92 65 57 84 2 21 81 49 68 42 39 90 31 13 27 69 61 3 74 52
|
||||||
|
Card 113: 68 9 32 67 96 43 14 15 28 48 | 2 81 58 90 45 89 53 34 39 7 46 55 20 69 25 66 17 54 44 19 93 23 92 26 10
|
||||||
|
Card 114: 25 77 57 50 59 16 46 80 2 14 | 58 14 78 81 8 75 21 45 50 67 55 1 51 92 20 25 86 32 72 54 65 44 38 91 70
|
||||||
|
Card 115: 11 10 76 79 84 82 16 14 43 6 | 84 59 20 63 79 33 23 47 40 17 48 80 76 25 83 16 82 89 6 11 10 97 44 43 14
|
||||||
|
Card 116: 21 1 37 82 29 36 57 76 68 63 | 86 38 20 14 36 8 7 31 68 21 56 1 63 26 28 57 96 54 29 82 37 76 61 71 40
|
||||||
|
Card 117: 4 7 73 26 78 49 22 11 74 35 | 76 26 57 22 66 36 73 35 16 77 87 49 32 54 92 43 7 15 20 38 8 82 29 78 11
|
||||||
|
Card 118: 58 12 45 87 44 90 48 72 77 66 | 34 57 66 52 90 98 4 99 21 80 8 3 18 45 79 23 50 10 43 62 54 60 39 29 33
|
||||||
|
Card 119: 58 97 56 38 78 75 84 99 7 32 | 92 33 78 72 7 84 64 18 38 43 27 32 21 99 85 40 58 93 97 13 3 75 56 25 46
|
||||||
|
Card 120: 40 31 79 63 24 20 11 56 92 32 | 63 32 92 22 1 30 79 20 58 53 64 24 56 36 81 6 49 48 17 26 73 83 47 3 8
|
||||||
|
Card 121: 51 39 2 99 40 21 4 8 14 46 | 11 29 41 74 55 73 16 95 21 30 85 81 2 76 59 99 9 51 58 8 44 43 61 27 25
|
||||||
|
Card 122: 29 76 10 60 87 27 35 65 37 59 | 59 53 46 17 1 48 36 88 95 85 13 41 67 31 90 39 99 24 51 11 84 42 96 91 92
|
||||||
|
Card 123: 99 34 55 8 23 83 28 26 21 54 | 99 8 2 10 26 76 11 52 95 73 38 74 23 92 59 57 71 56 1 13 93 87 43 4 70
|
||||||
|
Card 124: 75 96 37 43 92 85 68 78 18 4 | 71 43 78 96 92 62 76 19 39 21 52 29 36 93 81 33 53 2 10 69 82 87 14 85 68
|
||||||
|
Card 125: 11 32 49 86 21 95 94 64 77 23 | 53 25 9 94 75 21 10 35 95 81 39 41 90 18 45 43 78 73 63 56 27 74 46 17 85
|
||||||
|
Card 126: 8 64 16 62 90 93 98 27 57 4 | 39 89 62 42 60 33 90 3 44 32 8 13 24 85 5 93 68 55 73 22 4 52 28 58 12
|
||||||
|
Card 127: 22 52 46 90 56 44 84 62 48 8 | 46 86 7 72 80 58 38 76 53 12 83 22 15 60 84 14 33 17 52 49 88 93 36 4 71
|
||||||
|
Card 128: 49 31 89 7 43 41 27 58 74 72 | 92 24 40 95 80 84 2 19 70 29 83 69 42 17 39 67 97 98 32 56 23 59 21 5 68
|
||||||
|
Card 129: 92 50 77 38 85 25 5 72 34 84 | 39 38 55 26 58 83 75 70 80 94 42 9 12 69 29 88 50 3 62 96 13 48 93 44 22
|
||||||
|
Card 130: 45 23 32 47 89 28 9 95 94 14 | 53 78 75 3 50 29 65 60 1 98 15 13 36 71 52 21 66 19 73 67 91 37 76 26 56
|
||||||
|
Card 131: 70 27 15 12 83 23 96 57 90 77 | 14 34 88 74 59 68 94 44 99 39 40 78 47 17 43 42 80 9 73 93 41 25 71 22 75
|
||||||
|
Card 132: 16 32 43 64 77 1 14 78 97 98 | 78 97 64 75 52 98 13 81 16 57 3 9 14 83 32 28 56 58 1 43 87 12 77 24 31
|
||||||
|
Card 133: 95 53 4 45 36 20 77 60 8 49 | 2 62 83 20 53 95 57 86 8 45 38 63 49 82 85 26 36 60 89 81 92 51 54 4 99
|
||||||
|
Card 134: 95 23 88 8 52 67 46 15 36 55 | 74 44 67 8 94 88 82 46 6 34 64 23 36 14 19 91 15 72 98 56 55 95 65 13 52
|
||||||
|
Card 135: 27 40 81 65 23 49 89 67 4 32 | 75 32 8 40 16 27 38 54 48 67 22 42 85 57 4 97 76 81 82 28 55 65 2 72 23
|
||||||
|
Card 136: 7 35 1 24 95 80 25 4 75 37 | 73 28 64 72 56 66 55 29 52 2 80 98 11 41 16 78 75 89 35 12 85 69 24 42 39
|
||||||
|
Card 137: 19 38 84 95 77 68 50 70 16 17 | 71 69 30 27 86 7 35 96 33 74 20 93 36 47 6 55 29 32 78 72 58 46 21 99 9
|
||||||
|
Card 138: 97 58 41 82 43 64 26 81 2 36 | 55 79 30 88 96 99 34 82 25 6 71 44 54 77 91 11 90 80 76 40 92 69 64 29 15
|
||||||
|
Card 139: 41 27 9 87 98 24 72 58 2 88 | 93 72 58 89 34 23 24 48 49 98 78 50 87 64 2 14 85 21 62 75 88 60 41 53 16
|
||||||
|
Card 140: 79 92 45 91 75 2 1 57 66 40 | 42 82 45 28 75 91 1 11 63 17 20 54 27 92 48 40 12 57 69 66 2 21 19 88 79
|
||||||
|
Card 141: 33 4 49 55 78 9 61 83 58 50 | 50 9 94 83 98 78 14 66 67 61 71 4 72 39 49 40 29 30 36 16 47 3 58 19 33
|
||||||
|
Card 142: 80 32 49 19 43 42 50 86 97 87 | 42 15 71 58 18 85 80 19 97 86 32 62 95 44 56 50 83 28 51 34 33 43 36 87 49
|
||||||
|
Card 143: 76 89 44 30 69 84 47 85 42 23 | 54 17 16 52 86 48 81 92 1 7 78 64 66 59 21 55 36 58 46 37 6 61 89 72 82
|
||||||
|
Card 144: 22 9 57 50 38 82 66 70 92 37 | 71 18 63 27 87 34 23 13 39 92 77 60 74 46 50 48 57 54 66 22 59 83 44 9 70
|
||||||
|
Card 145: 56 90 36 66 70 16 73 62 4 37 | 18 34 96 7 47 65 99 56 58 75 85 31 36 3 90 70 5 66 83 62 73 16 55 37 4
|
||||||
|
Card 146: 68 59 27 32 62 43 25 22 42 3 | 67 68 59 70 98 16 8 25 24 22 44 53 63 11 6 65 54 74 81 32 91 50 13 62 99
|
||||||
|
Card 147: 21 95 4 18 23 68 83 36 29 3 | 94 42 90 33 50 39 41 66 58 8 96 83 15 85 56 93 14 99 67 37 5 61 24 4 3
|
||||||
|
Card 148: 13 22 23 39 61 17 50 28 25 19 | 86 92 67 42 85 22 17 19 7 5 39 55 47 20 64 25 50 66 31 30 61 41 18 89 74
|
||||||
|
Card 149: 24 79 8 18 15 97 95 13 33 89 | 72 18 13 85 89 49 47 1 11 84 40 50 44 71 15 53 43 26 8 86 23 22 83 21 97
|
||||||
|
Card 150: 98 78 63 19 91 86 1 9 55 35 | 41 33 95 85 83 20 66 23 86 94 8 87 43 37 71 58 21 14 96 3 29 6 39 53 32
|
||||||
|
Card 151: 47 78 1 40 26 97 61 73 24 21 | 59 60 94 4 52 42 92 19 23 57 82 88 70 45 43 96 7 72 26 58 71 6 16 53 8
|
||||||
|
Card 152: 3 79 50 95 26 91 66 60 71 53 | 12 96 93 92 49 5 9 76 30 8 23 58 63 73 94 10 19 46 39 55 33 87 18 78 86
|
||||||
|
Card 153: 2 55 64 32 42 68 63 52 50 90 | 60 20 30 16 98 85 1 35 97 33 64 65 79 12 51 78 48 49 86 50 57 99 3 10 46
|
||||||
|
Card 154: 4 72 77 78 27 68 37 57 82 91 | 38 39 36 23 43 53 71 24 63 64 89 80 49 97 60 47 21 90 93 48 70 86 65 66 3
|
||||||
|
Card 155: 90 34 33 91 74 28 36 4 5 39 | 51 23 30 73 37 97 99 25 32 54 67 52 75 48 38 78 42 35 13 6 81 63 49 83 80
|
||||||
|
Card 156: 38 8 26 2 43 32 72 45 29 5 | 77 89 32 45 73 34 23 80 1 78 5 86 19 38 7 59 75 29 8 43 26 72 20 12 2
|
||||||
|
Card 157: 42 20 82 74 94 44 54 33 69 93 | 94 98 34 54 20 68 82 18 13 53 33 67 22 42 72 16 62 6 25 17 46 56 87 9 7
|
||||||
|
Card 158: 41 46 13 9 93 48 65 76 3 4 | 10 67 53 57 44 18 47 13 98 59 6 52 5 91 17 54 97 61 68 26 25 42 40 72 22
|
||||||
|
Card 159: 73 1 50 18 66 97 12 93 41 80 | 12 80 36 41 53 1 50 18 19 75 3 40 39 16 83 85 66 73 35 70 97 25 56 67 93
|
||||||
|
Card 160: 86 47 9 35 3 85 33 53 99 50 | 44 55 12 43 86 13 20 31 3 37 33 28 9 41 98 39 35 58 19 29 25 1 82 67 71
|
||||||
|
Card 161: 68 93 52 43 62 15 66 33 53 84 | 27 44 37 39 50 71 63 94 20 79 62 38 42 72 12 33 85 9 43 93 83 68 28 47 45
|
||||||
|
Card 162: 54 43 38 6 50 80 72 41 78 92 | 92 73 55 15 34 61 79 57 72 71 53 83 50 41 47 60 10 58 67 36 69 2 63 84 5
|
||||||
|
Card 163: 58 52 14 99 77 51 70 16 35 57 | 60 51 34 86 92 66 10 93 99 16 67 27 47 19 35 61 58 4 9 28 82 84 42 38 43
|
||||||
|
Card 164: 9 19 34 3 38 46 74 85 42 87 | 68 71 70 98 63 84 10 59 16 76 91 18 36 4 60 77 97 80 64 88 95 66 94 58 37
|
||||||
|
Card 165: 46 68 72 82 41 79 28 6 19 23 | 88 74 16 36 44 19 46 63 85 77 94 38 42 28 21 26 70 66 1 51 9 45 49 20 6
|
||||||
|
Card 166: 94 97 38 52 45 84 81 71 49 22 | 86 66 45 40 21 58 6 82 29 87 38 68 20 96 95 49 4 77 25 36 32 51 18 94 48
|
||||||
|
Card 167: 47 98 46 63 38 23 57 61 31 96 | 63 44 68 56 67 26 27 7 10 93 79 50 4 48 42 9 19 5 23 11 47 52 40 88 58
|
||||||
|
Card 168: 36 59 73 99 8 49 63 19 34 74 | 24 30 98 46 65 95 91 14 7 37 87 57 40 67 16 94 66 93 12 82 48 28 88 90 58
|
||||||
|
Card 169: 34 48 11 54 74 40 13 71 86 76 | 7 65 66 23 95 45 27 42 47 60 20 92 28 84 50 73 2 80 41 99 77 62 17 21 85
|
||||||
|
Card 170: 67 6 17 58 51 2 19 72 33 41 | 34 20 46 35 29 89 12 77 37 97 88 4 98 44 82 39 38 15 32 48 63 65 68 21 93
|
||||||
|
Card 171: 63 1 50 71 14 33 78 85 40 99 | 40 32 54 69 4 93 85 1 99 50 71 78 57 22 63 5 14 38 33 72 16 24 29 64 13
|
||||||
|
Card 172: 33 52 35 85 57 49 60 11 80 43 | 39 92 94 83 49 81 82 79 97 5 72 33 87 80 63 52 96 53 1 43 35 60 85 57 11
|
||||||
|
Card 173: 33 40 92 88 97 77 20 84 27 23 | 58 33 12 27 34 92 46 23 13 62 77 82 43 54 40 64 37 96 15 84 60 88 20 97 1
|
||||||
|
Card 174: 4 6 66 57 77 24 59 50 9 46 | 63 57 2 60 4 89 88 46 24 14 5 66 16 59 11 13 64 39 38 92 65 44 77 17 79
|
||||||
|
Card 175: 55 82 61 80 67 89 90 93 43 1 | 7 3 84 23 14 69 47 35 57 10 95 99 64 63 42 93 96 6 53 72 29 33 18 56 83
|
||||||
|
Card 176: 70 7 30 29 66 82 8 24 89 11 | 9 67 86 87 22 76 50 51 40 21 6 98 94 17 12 74 33 34 55 20 53 99 1 80 52
|
||||||
|
Card 177: 78 14 51 53 26 44 36 2 33 23 | 53 26 48 24 5 88 33 90 36 22 29 89 51 45 70 44 23 2 73 91 57 92 78 47 14
|
||||||
|
Card 178: 19 75 43 85 35 45 93 59 57 7 | 57 32 12 45 76 59 71 85 74 46 69 25 86 10 50 44 79 95 93 49 63 24 82 33 73
|
||||||
|
Card 179: 35 18 9 3 88 62 83 98 61 41 | 41 70 64 48 31 61 45 46 15 99 69 51 98 28 87 17 30 26 24 52 29 71 60 38 66
|
||||||
|
Card 180: 13 20 97 73 94 22 80 40 47 85 | 41 30 22 11 65 87 69 23 58 27 59 57 96 55 82 20 79 76 85 3 89 13 8 25 94
|
||||||
|
Card 181: 14 74 36 86 59 49 69 24 65 28 | 93 24 57 83 34 62 80 85 74 36 23 9 13 45 52 67 64 26 15 69 95 21 43 38 77
|
||||||
|
Card 182: 41 88 35 24 7 6 11 79 8 56 | 25 78 66 69 64 44 95 81 85 48 87 26 47 63 56 3 94 86 8 52 24 73 15 20 19
|
||||||
|
Card 183: 2 35 46 34 76 99 12 47 33 64 | 15 53 32 21 73 11 7 26 75 95 37 17 67 56 77 99 39 72 82 47 2 64 20 33 55
|
||||||
|
Card 184: 73 43 57 65 99 86 29 32 69 53 | 4 19 89 82 48 94 18 53 17 64 45 85 26 52 97 43 47 1 41 90 65 72 46 20 31
|
||||||
|
Card 185: 81 71 51 68 27 22 63 76 85 3 | 84 20 91 48 47 98 13 30 83 64 93 26 50 78 66 77 9 97 32 12 90 41 74 52 43
|
||||||
|
Card 186: 76 27 92 85 62 60 75 11 65 70 | 48 51 58 99 40 52 50 10 95 1 46 21 67 78 86 36 55 14 84 28 12 18 8 42 53
|
||||||
|
Card 187: 88 55 79 69 45 73 16 21 5 11 | 95 24 32 59 96 37 87 7 28 89 33 82 35 60 83 20 43 75 57 80 1 9 52 31 36
|
||||||
|
Card 188: 61 32 89 34 13 46 66 42 22 91 | 74 52 2 85 82 57 8 41 26 6 10 38 95 64 90 79 3 60 98 76 45 94 51 70 28
|
||||||
33
src/bin/sources/part05.sample
Normal file
33
src/bin/sources/part05.sample
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
seeds: 79 14 55 13
|
||||||
|
|
||||||
|
seed-to-soil map:
|
||||||
|
50 98 2
|
||||||
|
52 50 48
|
||||||
|
|
||||||
|
soil-to-fertilizer map:
|
||||||
|
0 15 37
|
||||||
|
37 52 2
|
||||||
|
39 0 15
|
||||||
|
|
||||||
|
fertilizer-to-water map:
|
||||||
|
49 53 8
|
||||||
|
0 11 42
|
||||||
|
42 0 7
|
||||||
|
57 7 4
|
||||||
|
|
||||||
|
water-to-light map:
|
||||||
|
88 18 7
|
||||||
|
18 25 70
|
||||||
|
|
||||||
|
light-to-temperature map:
|
||||||
|
45 77 23
|
||||||
|
81 45 19
|
||||||
|
68 64 13
|
||||||
|
|
||||||
|
temperature-to-humidity map:
|
||||||
|
0 69 1
|
||||||
|
1 0 69
|
||||||
|
|
||||||
|
humidity-to-location map:
|
||||||
|
60 56 37
|
||||||
|
56 93 4
|
||||||
213
src/bin/sources/part05.txt
Normal file
213
src/bin/sources/part05.txt
Normal file
@@ -0,0 +1,213 @@
|
|||||||
|
seeds: 3139431799 50198205 3647185634 110151761 2478641666 139825503 498892555 8913570 961540761 489996751 568452082 100080382 907727477 42158689 1617552130 312026427 342640189 97088268 2049289560 336766062
|
||||||
|
|
||||||
|
seed-to-soil map:
|
||||||
|
1615836342 1401909974 23067952
|
||||||
|
785532007 269485885 88937774
|
||||||
|
3019002892 2773729385 10470414
|
||||||
|
4202163101 2747292152 26437233
|
||||||
|
3183210415 4217634159 77333137
|
||||||
|
2847460091 3211730218 136699600
|
||||||
|
2455891790 3791729773 70553041
|
||||||
|
3260543552 2581343101 165949051
|
||||||
|
3840286095 2849853212 361877006
|
||||||
|
4228600334 2361239030 66366962
|
||||||
|
1594559581 1077839137 21276761
|
||||||
|
380069408 165017790 44262617
|
||||||
|
3598718222 1894384162 241567873
|
||||||
|
0 1424977926 190757551
|
||||||
|
1894384162 2810496375 39356837
|
||||||
|
424332025 606264721 196539291
|
||||||
|
3521487829 2221977524 77230393
|
||||||
|
742681934 69797365 36566707
|
||||||
|
1638904294 1615735477 139190145
|
||||||
|
1335949488 0 69797365
|
||||||
|
779248641 802804012 6283366
|
||||||
|
2638766896 4008940964 208693195
|
||||||
|
250963029 1142644585 70452661
|
||||||
|
1933740999 3470280789 321448984
|
||||||
|
190757551 209280407 60205478
|
||||||
|
1778094439 1099115898 43528687
|
||||||
|
2255189983 3348429818 121850971
|
||||||
|
1000500225 809087378 268751759
|
||||||
|
1269251984 1754925622 66697504
|
||||||
|
874469781 358423659 126030444
|
||||||
|
2526444831 2135952035 86025489
|
||||||
|
2439072067 3992121241 16819723
|
||||||
|
3426492603 3897126015 94995226
|
||||||
|
1405746853 1213097246 188812728
|
||||||
|
321415690 106364072 58653718
|
||||||
|
2984159691 3862282814 34843201
|
||||||
|
2377040954 2299207917 62031113
|
||||||
|
3029473306 2427605992 153737109
|
||||||
|
2612470320 2784199799 26296576
|
||||||
|
620871316 484454103 121810618
|
||||||
|
|
||||||
|
soil-to-fertilizer map:
|
||||||
|
4245401761 2352458099 28057201
|
||||||
|
2099789767 3998256334 14950546
|
||||||
|
3446056574 2749719529 135349925
|
||||||
|
890092371 1379309857 42097049
|
||||||
|
953714890 896502554 10335567
|
||||||
|
3115342240 2380515300 218129381
|
||||||
|
3333471621 3885671381 112584953
|
||||||
|
663999152 0 226093219
|
||||||
|
1873325002 727305635 169196919
|
||||||
|
2042521921 1328150912 51158945
|
||||||
|
3581406499 4034715214 260252082
|
||||||
|
500989478 564295961 163009674
|
||||||
|
4273458962 4013206880 21508334
|
||||||
|
3992733429 2099789767 164092891
|
||||||
|
4156826320 2263882658 88575441
|
||||||
|
3841658581 2598644681 151074848
|
||||||
|
1094703999 226093219 21270249
|
||||||
|
1708571521 399542480 164753481
|
||||||
|
964050457 247363468 130653542
|
||||||
|
1236290130 1421406906 171284482
|
||||||
|
0 1592691388 500989478
|
||||||
|
932189420 378017010 21525470
|
||||||
|
2114740313 2885069454 1000601927
|
||||||
|
1115974248 1207835030 120315882
|
||||||
|
1407574612 906838121 300996909
|
||||||
|
|
||||||
|
fertilizer-to-water map:
|
||||||
|
3217858280 3761663130 355893932
|
||||||
|
2319366035 2401839275 72374872
|
||||||
|
1962726423 909927230 105011330
|
||||||
|
2115307878 441322644 204058157
|
||||||
|
2095064202 1824085445 20243676
|
||||||
|
110580631 329763915 34129824
|
||||||
|
2573484127 2701101998 225220022
|
||||||
|
1780224111 2342656863 59182412
|
||||||
|
1717605398 1571533532 62618713
|
||||||
|
3589165621 3062909078 75538793
|
||||||
|
842280446 1871096488 471560375
|
||||||
|
409726333 0 243114563
|
||||||
|
397401582 760576019 12324751
|
||||||
|
0 667815878 92760141
|
||||||
|
3990305711 2926322020 5981819
|
||||||
|
251664023 1741105813 32320840
|
||||||
|
2072629125 645380801 22435077
|
||||||
|
92760141 363893739 17820490
|
||||||
|
2798704149 3138447871 156185660
|
||||||
|
3664704414 2573484127 127617871
|
||||||
|
1839406523 381714229 59608415
|
||||||
|
283984863 1844329121 26767367
|
||||||
|
1313840821 1176023584 27579684
|
||||||
|
2391740907 1790738543 33346902
|
||||||
|
3929650615 4234312200 60655096
|
||||||
|
3996287530 3557602002 204061128
|
||||||
|
1402088224 772900770 137026460
|
||||||
|
1911435456 2474214147 51290967
|
||||||
|
1539114684 1393042818 178490714
|
||||||
|
3573752212 4117557062 15413409
|
||||||
|
1341420505 1014938560 60667719
|
||||||
|
3792322285 4132970471 6723091
|
||||||
|
4200348658 4139693562 80082634
|
||||||
|
652840896 1203603268 189439550
|
||||||
|
310752230 243114563 86649352
|
||||||
|
2425087809 1075606279 100417305
|
||||||
|
1899014938 1773426653 12420518
|
||||||
|
2067737753 1785847171 4891372
|
||||||
|
3799045376 2932303839 130605239
|
||||||
|
2954889809 3294633531 262968471
|
||||||
|
4280431292 4219776196 14536004
|
||||||
|
144710455 1634152245 106953568
|
||||||
|
|
||||||
|
water-to-light map:
|
||||||
|
1071107509 759231097 26724064
|
||||||
|
1293599454 642189614 64567949
|
||||||
|
3147690498 1633749175 71376364
|
||||||
|
3487999223 4080968704 155844998
|
||||||
|
1700873635 2097781236 292450760
|
||||||
|
1146121952 1950303734 147477502
|
||||||
|
2864027062 1470573702 75076585
|
||||||
|
2507471274 3021419800 175807670
|
||||||
|
2939103647 922829268 123372939
|
||||||
|
2826742681 2551285626 37284381
|
||||||
|
719212681 1821763210 100196810
|
||||||
|
4236813702 4292227071 2740225
|
||||||
|
3643844221 3837685117 243283587
|
||||||
|
209103905 785955161 52302440
|
||||||
|
100332146 752700417 6530680
|
||||||
|
1478192138 3229160565 10342236
|
||||||
|
1358167403 3239502801 94242072
|
||||||
|
3219066862 706757563 45942854
|
||||||
|
3062476586 1358475140 29661777
|
||||||
|
819409491 2390231996 26561329
|
||||||
|
4195136152 3511184798 41677550
|
||||||
|
1488534374 1046202207 35444248
|
||||||
|
3887127808 3552862348 284822769
|
||||||
|
2188804057 1705125539 116637671
|
||||||
|
0 309410320 100332146
|
||||||
|
1117778238 1921960020 28343714
|
||||||
|
261406345 3333744873 74978759
|
||||||
|
2100705169 1545650287 88098888
|
||||||
|
3450098653 3473284228 37900570
|
||||||
|
2742067948 1273800407 84674733
|
||||||
|
2305441728 107380774 202029546
|
||||||
|
3265009716 1130086491 143713916
|
||||||
|
1993324395 0 107380774
|
||||||
|
1523978622 465294601 176895013
|
||||||
|
106862826 2588570007 102241079
|
||||||
|
2683278944 864040264 58789004
|
||||||
|
4239553927 4236813702 55413369
|
||||||
|
1097831573 1081646455 19946665
|
||||||
|
524293914 1101593120 28493371
|
||||||
|
336385104 2833510990 187908810
|
||||||
|
552787285 3197227470 31933095
|
||||||
|
845970820 2690811086 142699904
|
||||||
|
988670724 1388136917 82436785
|
||||||
|
1452409475 838257601 25782663
|
||||||
|
3092138363 409742466 55552135
|
||||||
|
584720380 2416793325 134492301
|
||||||
|
4171950577 3450098653 23185575
|
||||||
|
|
||||||
|
light-to-temperature map:
|
||||||
|
2906633798 3843376160 451591136
|
||||||
|
1332454428 1190958320 69004583
|
||||||
|
1837712164 0 353313230
|
||||||
|
494809338 353313230 376619264
|
||||||
|
871428602 729932494 461025826
|
||||||
|
1401459011 1754772241 373416033
|
||||||
|
3976747173 3375456648 91164221
|
||||||
|
3495346659 3466620869 376755291
|
||||||
|
0 1259962903 494809338
|
||||||
|
2608238358 2459541635 298395440
|
||||||
|
3907558614 2984992977 69188559
|
||||||
|
3872101950 2286963246 35456664
|
||||||
|
4067911394 2757937075 227055902
|
||||||
|
3358224934 2322419910 137121725
|
||||||
|
2286963246 3054181536 321275112
|
||||||
|
1774875044 2128188274 62837120
|
||||||
|
|
||||||
|
temperature-to-humidity map:
|
||||||
|
3966168141 3406025946 214996780
|
||||||
|
4181164921 3292223571 113802375
|
||||||
|
1493139015 1471031672 367564898
|
||||||
|
1423475871 1838596570 69663144
|
||||||
|
0 479293006 226560784
|
||||||
|
2500785470 2859072453 433151118
|
||||||
|
3197453551 2500785470 96923792
|
||||||
|
758446483 1237739489 233292183
|
||||||
|
991738666 0 278789291
|
||||||
|
3555740534 3884539689 410427607
|
||||||
|
3294377343 2597709262 261363191
|
||||||
|
226560784 705853790 531885699
|
||||||
|
1860703913 305742584 20602508
|
||||||
|
2933936588 3621022726 263516963
|
||||||
|
1881306421 278789291 26953293
|
||||||
|
1270527957 326345092 152947914
|
||||||
|
|
||||||
|
humidity-to-location map:
|
||||||
|
848612454 2250862530 61410922
|
||||||
|
910023376 3689675651 35197452
|
||||||
|
3724873103 3865027106 240221283
|
||||||
|
483883727 3324946924 364728727
|
||||||
|
0 1766978803 483883727
|
||||||
|
1957894300 561533 922927950
|
||||||
|
945220828 2590144784 734802140
|
||||||
|
2880822250 0 561533
|
||||||
|
3447014853 1489120553 277858250
|
||||||
|
2881383783 923489483 565631070
|
||||||
|
3965094386 3724873103 140154003
|
||||||
|
1680022968 2312273452 277871332
|
||||||
2
src/bin/sources/part06.sample
Normal file
2
src/bin/sources/part06.sample
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
Time: 7 15 30
|
||||||
|
Distance: 9 40 200
|
||||||
2
src/bin/sources/part06.txt
Normal file
2
src/bin/sources/part06.txt
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
Time: 61 70 90 66
|
||||||
|
Distance: 643 1184 1362 1041
|
||||||
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