Compare commits

..

14 Commits

Author SHA1 Message Date
MaxJa4
260450a702 Part 11 2023-12-21 10:55:54 +01:00
MaxJa4
7a203d3572 Rearrange sources 2023-12-16 12:59:08 +01:00
MaxJa4
923ea69669 Part 15 2023-12-15 17:17:26 +01:00
MaxJa4
043a777732 Part 09 2023-12-09 14:22:02 +01:00
MaxJa4
0c814889b5 Part 08 2023-12-08 22:02:12 +01:00
MaxJa4
f3b87802c4 Part 07 2023-12-08 20:12:32 +01:00
MaxJa4
4b55f4524e Remove Cargo.lock 2023-12-06 22:56:00 +01:00
MaxJa4
d7e478ca15 Part 06 2023-12-06 22:54:50 +01:00
MaxJa4
79719bbb10 Part 05 2023-12-06 22:54:50 +01:00
MaxJa4
737572af89 Part 04 2023-12-06 22:54:50 +01:00
MaxJa4
067cc9c888 Part 03 2023-12-06 22:54:50 +01:00
MaxJa4
a6dc0b166d Part 02 2023-12-06 22:54:50 +01:00
MaxJa4
748aaaf82b Part 01 2023-12-06 22:54:49 +01:00
MaxJa4
64a7833fd9 Add Cargo.toml and .vscode/launch.json files 2023-12-06 22:54:49 +01:00
35 changed files with 5377 additions and 0 deletions

265
.vscode/launch.json vendored Normal file
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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
View 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

File diff suppressed because it is too large Load Diff

100
src/bin/sources/part02.txt Normal file
View 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
View 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...

View 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
View 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

View 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
View 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

View File

@@ -0,0 +1,2 @@
Time: 7 15 30
Distance: 9 40 200

View File

@@ -0,0 +1,2 @@
Time: 61 70 90 66
Distance: 643 1184 1362 1041

View File

@@ -0,0 +1,5 @@
32T3K 765
T55J5 684
KK677 28
KTJJT 220
QQQJA 483

1000
src/bin/sources/part07.txt Normal file

File diff suppressed because it is too large Load Diff

View 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)

View File

@@ -0,0 +1,5 @@
LLR
AAA = (BBB, BBB)
BBB = (AAA, ZZZ)
ZZZ = (ZZZ, ZZZ)

View 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
View 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)

View 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
View 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

View File

@@ -0,0 +1,10 @@
...#......
.......#..
#.........
..........
......#...
.#........
.........#
..........
.......#..
#...#.....

140
src/bin/sources/part11.txt Normal file
View File

@@ -0,0 +1,140 @@
.......#.....#.....................#.............#.................#.........................#..............................................
#.....................#.......#.................................................................................#.......#...................
.......................................................................#.........................#..................................#.......
................................................................#..............#..............................................#.............
.........................................#............................................................#....................................#
.................#..................................................#.......................................................................
...........................#...............................................................................#................................
....#.......#...........................................#..........................#.............................#..........................
....................#.............#........#................................................................................................
...................................................#...................................................#...................#................
.........................#........................................#..................................................#......................
......#..........#...........................................#...........#............#.....................................................
......................................#..........................................#.........................#.....................#..........
.#...................#..................................#.......................................#...........................................
............#.................................#.....................#.......................................................................
............................................................................................................................................
..............................#.....................................................................................#..................#....
....................................................................................#........#......#.......................................
.........................#.........................#............#...........................................#...............................
.#......#.....#.......................#.................#........................................................#.....#....................
...........................................................................#.................................................#..............
...............................................#.......................................#...............#..........................#.........
......................#..................#..................................................................................................
..........................................................................................................................#.................
......#...........................#.........................................................#........................#......................
..............................................................................................................................#.............
..#.......................#.................#............................................................................................#..
..................#....................................................#................#...................................................
....................................................#.....#....................#............................................................
...............................#............................................................................................................
..............................................#...............#..........................................................#...........#......
.#.........#........................#..................................................................#....................................
..........................................................................#.......................#........................................#
...................#......................................................................#.................................................
.............................................................................................................................#..............
.....#......................................................................................................................................
........................................................#........................#..........................................................
.............................#...............#.....................#.....#............#..................#..............................#...
............................................................................................#......#...........#............................
.........................#........#...................................................................................#.....................
...........................................................................................................................................#
.....................................................#.....#.................................................................#..............
#.........................................................................................................#.......................#.........
................#...........................................................#.....................#.........................................
..............................#..............#...................................#.......#...........................#......................
........#................#.........#............................#............................................#.............#.........#......
............................................................................................................................................
.......................................................#...............#.............................#...........................#..........
.............#.................................#............................................................................................
............................................................................................................................................
..#.............................................................................#...........................................#...........#...
............................................................................................................................................
......................................#..........................................................#................#.........................
............................#................#......#......................#...........#....................................................
............................................................................................................................................
....................................................................................................#................#..........#...........
.#............#...................#...............................#........................................#.............................#..
.........#...............................................................#..................................................................
.......................#....................#........#...........................................#..........................................
............................................................#.....................................................#.........................
..............................#.......................................................................#...................#.......#.........
............#.......................#...................#............................#......................................................
...................................................#......................................#..............................................#..
.#................#...................................................#........................#............................................
......#....................................................................#................................#...............................
...............................#....................................................................................#.......................
.........................#.....................#......#.............................................#.................................#.....
............................................................................................................................................
...............#.....................#....................................................#.................................................
..................................................................................................................#.........................
....#......#.....................................#..............................#............................#............#.....#...........
....................#.............................................#....................#.........#.......................................#..
.........................................................#..............#.............................#.....................................
............................#...........#...........................................................................#.......................
............................................................................................................................................
#..................................#...............................................................#..........#.............................
.......#......................................................................................#.................................#.......#...
.....................#....................#...............................#.....#......................................#....................
................................#..........................#......#....................#..........................#.........................
..............#...................................#........................................................................#...............#
....#....................................................................................................#..................................
.......................#....................................................................................................................
......................................#................................#..................#.................................................
.....................................................#............................................#...............................#.........
............................................................................................................................................
............................................................................................................................................
....#.................#..................................#.........................#..........................#.............................
.............#........................................................................................#..................#..................
......................................#............................................................................#........................
.........#....................................................#.........#............................................................#......
.............................................................................................#..............................................
.............................#...........#............................................................................#.....................
#..................#................................................#....................#.......................................#.........#
...................................................................................................#......#.................................
...........#.............................................#...........................#......................................................
....................................#.......................................................................................................
..................................................#..........#.........#......................#.....................#.......................
.#......#....................................#..............................................................#...............................
.............................#.............................................#................................................................
.......................#...............................................................................#....................#...............
....................................................#.....................................#...........................................#.....
................#.....................#..................#.................................................................................#
...#.....#..........................................................#................#......................................................
.............................................#...............#................................#......#......................................
...............................#...............................................#............................................................
.............................................................................................................................#.........#....
.....................#................................................#.................................................#...................
...............#.........................#.......................#..................#.......................................................
.....#......................................................................................................#.......................#.......
....................................#.................#.........................#..................#........................................
........................................................................................................................................#...
.........#..............#.....................................#........................................#.....................#..............
...............................................#...................#........................................................................
......................................#.............#..................................#.....#.......................#......................
............#.....#...............................................................................#.........................................
...#...................................................................................................................................#....
.......................#.........................#..........................................................................................
.........................................................#...........#.........................#........#..........#.............#..........
............................#..............#....................#........................................................#..................
.......#.................................................................#................#.................................................
.................#..................................................................................#........................#...........#..
...................................................#.......#................................................................................
.........................................#......................................#......................................#....................
....................................#...........................................................................#...........................
..............................#.............................................................#...........#.......................#......#....
.........#...............................................#..............#...................................................................
........................#....................#.....................................#........................................................
#...........................................................................................................................................
............................#......................................................................#.......#................................
......................................#.....................................................................................................
.....#............#.........................................#..........................#..........................................#.........
...........................................#......................#..............................................#..........................
..............#..............................................................................#............................#.............#...
..#......#...........................................#..............................#..................#.....#..............................
....................#..........#.....#...............................#......................................................................
............................................................................................................................................
.................................................#..........................................................................................
.............#..........#...............................#...............#.............#..........#.........#........#.......................
............................................#................#.................#............................................................
....................................#....................................................................................#.............#....

View File

@@ -0,0 +1 @@
rn=1,cm-,qp=3,cm=2,qp-,pc=4,ot=9,ab=5,pc-,pc=6,ot=7

File diff suppressed because one or more lines are too long