Compare commits
23 Commits
64cb7fb370
...
9b2497f31e
Author | SHA1 | Date | |
---|---|---|---|
9b2497f31e | |||
ada97e5ad6 | |||
b457e10a35 | |||
961bc666d6 | |||
f61f1567cf | |||
49633b8504 | |||
8fd9bcd63a | |||
a09f89896d | |||
d12175371e | |||
3da784f97d | |||
b39f312e9f | |||
f663a57db8 | |||
33ba8d72f4 | |||
29a122c3ff | |||
dafe576fc9 | |||
900f01913f | |||
f952db1e0f | |||
1ec3c9c939 | |||
27e9e60089 | |||
d06a694543 | |||
d655185336 | |||
f468af10f4 | |||
4d1477d7c1 |
69
Cargo.lock
generated
69
Cargo.lock
generated
@ -2,25 +2,84 @@
|
|||||||
# It is not intended for manual editing.
|
# It is not intended for manual editing.
|
||||||
version = 4
|
version = 4
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "aho-corasick"
|
||||||
|
version = "1.1.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916"
|
||||||
|
dependencies = [
|
||||||
|
"memchr",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "either"
|
||||||
|
version = "1.13.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "genaoc"
|
name = "genaoc"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "itertools"
|
||||||
|
version = "0.13.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186"
|
||||||
|
dependencies = [
|
||||||
|
"either",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "md5"
|
name = "md5"
|
||||||
version = "0.7.0"
|
version = "0.7.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771"
|
checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "memchr"
|
||||||
|
version = "2.7.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex"
|
||||||
|
version = "1.11.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191"
|
||||||
|
dependencies = [
|
||||||
|
"aho-corasick",
|
||||||
|
"memchr",
|
||||||
|
"regex-automata",
|
||||||
|
"regex-syntax",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex-automata"
|
||||||
|
version = "0.4.9"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908"
|
||||||
|
dependencies = [
|
||||||
|
"aho-corasick",
|
||||||
|
"memchr",
|
||||||
|
"regex-syntax",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "regex-syntax"
|
||||||
|
version = "0.8.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "utils"
|
name = "utils"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://git.plobos.xyz/projects/PuzzleUtils.git#49b0f24c1bdc2c04df237634607df15f19fb3ead"
|
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "y2015"
|
name = "y2015"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
"itertools",
|
||||||
"md5",
|
"md5",
|
||||||
"utils",
|
"utils",
|
||||||
]
|
]
|
||||||
@ -28,6 +87,9 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "y2016"
|
name = "y2016"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"md5",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "y2017"
|
name = "y2017"
|
||||||
@ -60,3 +122,8 @@ version = "0.1.0"
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "y2024"
|
name = "y2024"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"itertools",
|
||||||
|
"regex",
|
||||||
|
"utils",
|
||||||
|
]
|
||||||
|
@ -19,4 +19,7 @@ members = [
|
|||||||
]
|
]
|
||||||
|
|
||||||
[workspace.dependencies]
|
[workspace.dependencies]
|
||||||
utils = { git = "https://git.plobos.xyz/projects/PuzzleUtils.git" }
|
utils = { path = "../utils" }
|
||||||
|
itertools = "0.13.0"
|
||||||
|
regex = "1.11.1"
|
||||||
|
md5 = "0.7.0"
|
||||||
|
179
day22.js
Normal file
179
day22.js
Normal file
@ -0,0 +1,179 @@
|
|||||||
|
'use strict';
|
||||||
|
|
||||||
|
var bossStats = {
|
||||||
|
hp: 71,
|
||||||
|
damageAmt: 10,
|
||||||
|
}
|
||||||
|
|
||||||
|
class Player {
|
||||||
|
constructor(initial, isWizard) {
|
||||||
|
this.history = [];
|
||||||
|
this.initial = initial;
|
||||||
|
this.isWizard = !!isWizard;
|
||||||
|
|
||||||
|
if (this.isWizard) {
|
||||||
|
this.spells = [
|
||||||
|
{
|
||||||
|
cost: 53,
|
||||||
|
effect: (m, o) => o.damage(4),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
cost: 73,
|
||||||
|
effect: (m, o) => { o.damage(2); m.hp += 2; },
|
||||||
|
},
|
||||||
|
{
|
||||||
|
cost: 113,
|
||||||
|
start: (m, o) => m.armor += 7,
|
||||||
|
effect: (m, o) => { },
|
||||||
|
end: (m, o) => m.armor -= 7,
|
||||||
|
duration: 6,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
cost: 173,
|
||||||
|
effect: (m, o) => o.damage(3),
|
||||||
|
duration: 6,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
cost: 229,
|
||||||
|
effect: (m, o) => m.mana += 101,
|
||||||
|
duration: 5,
|
||||||
|
},
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
this.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
attack(opponent, spellIdx) {
|
||||||
|
if (!this.isWizard) {
|
||||||
|
opponent.damage(this.damageAmt);
|
||||||
|
} else {
|
||||||
|
this.history.push(spellIdx);
|
||||||
|
var spell = this.spells[spellIdx];
|
||||||
|
this.spent += spell.cost;
|
||||||
|
this.mana -= spell.cost;
|
||||||
|
|
||||||
|
if (spell.duration) {
|
||||||
|
var newSpell = {
|
||||||
|
idx: spellIdx,
|
||||||
|
effect: spell.effect,
|
||||||
|
duration: spell.duration,
|
||||||
|
};
|
||||||
|
if (spell.start) {
|
||||||
|
spell.start(this, opponent);
|
||||||
|
}
|
||||||
|
if (spell.end) {
|
||||||
|
newSpell.end = spell.end;
|
||||||
|
}
|
||||||
|
this.activeSpells.push(newSpell);
|
||||||
|
} else {
|
||||||
|
spell.effect(this, opponent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
damage(n) {
|
||||||
|
this.hp -= Math.max(1, n - this.armor);
|
||||||
|
}
|
||||||
|
|
||||||
|
duplicate() {
|
||||||
|
var newPlayer = new Player(this.initial, this.isWizard);
|
||||||
|
newPlayer.hp = this.hp;
|
||||||
|
newPlayer.spent = this.spent;
|
||||||
|
newPlayer.armor = this.armor;
|
||||||
|
newPlayer.turn = this.turn;
|
||||||
|
for (var i = 0; i < this.activeSpells.length; i++) {
|
||||||
|
newPlayer.activeSpells.push(Object.assign({}, this.activeSpells[i]));
|
||||||
|
}
|
||||||
|
for (var i = 0; i < this.history.length; i++) {
|
||||||
|
newPlayer.history.push(this.history[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.isWizard)
|
||||||
|
newPlayer.mana = this.mana;
|
||||||
|
else
|
||||||
|
newPlayer.damageAmt = this.damageAmt;
|
||||||
|
|
||||||
|
return newPlayer;
|
||||||
|
}
|
||||||
|
|
||||||
|
takeTurn(opponent) {
|
||||||
|
this.turn++;
|
||||||
|
|
||||||
|
for (var i = 0; i < this.activeSpells.length; i++) {
|
||||||
|
var spell = this.activeSpells[i];
|
||||||
|
|
||||||
|
if (spell.duration > 0) {
|
||||||
|
spell.effect(this, opponent);
|
||||||
|
spell.duration--;
|
||||||
|
|
||||||
|
if (spell.duration === 0 && spell.end) {
|
||||||
|
spell.end(this, opponent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
start() {
|
||||||
|
this.hp = this.initial.hp;
|
||||||
|
this.spent = 0;
|
||||||
|
this.armor = 0;
|
||||||
|
this.turn = 0;
|
||||||
|
this.activeSpells = [];
|
||||||
|
if (this.isWizard)
|
||||||
|
this.mana = this.initial.mana;
|
||||||
|
else
|
||||||
|
this.damageAmt = this.initial.damageAmt;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
var me = new Player({ hp: 50, mana: 500 }, true);
|
||||||
|
var boss = new Player(bossStats);
|
||||||
|
|
||||||
|
var cheapestSpent = Infinity;
|
||||||
|
|
||||||
|
function playAllGames(me, boss, partTwo, depth) {
|
||||||
|
depth = depth || 0;
|
||||||
|
for (var i = 0; i < me.spells.length; i++) {
|
||||||
|
var spellMatch = false;
|
||||||
|
for (var j = 0; j < me.activeSpells.length; j++) {
|
||||||
|
if (me.activeSpells[j].duration > 1 && i === me.activeSpells[j].idx) {
|
||||||
|
spellMatch = true;;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (spellMatch)
|
||||||
|
continue;
|
||||||
|
if (me.spells[i].cost > me.mana) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
var newMe = me.duplicate();
|
||||||
|
var newBoss = boss.duplicate();
|
||||||
|
|
||||||
|
if (partTwo)
|
||||||
|
newMe.hp--;
|
||||||
|
|
||||||
|
newMe.takeTurn(newBoss);
|
||||||
|
newBoss.takeTurn(newMe);
|
||||||
|
newMe.attack(newBoss, i);
|
||||||
|
|
||||||
|
newMe.takeTurn(newBoss);
|
||||||
|
newBoss.takeTurn(newMe);
|
||||||
|
newBoss.attack(newMe);
|
||||||
|
|
||||||
|
|
||||||
|
if (newBoss.hp <= 0) {
|
||||||
|
cheapestSpent = Math.min(cheapestSpent, newMe.spent);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (newMe.hp > (partTwo ? 1 : 0) && newBoss.hp > 0 && newMe.spent < cheapestSpent)
|
||||||
|
playAllGames(newMe, newBoss, partTwo, depth + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
playAllGames(me, boss);
|
||||||
|
console.log('Part One:', cheapestSpent);
|
||||||
|
cheapestSpent = Infinity;
|
||||||
|
playAllGames(me, boss, true);
|
||||||
|
console.log('Part Two:', cheapestSpent);
|
4
justfile
4
justfile
@ -1,8 +1,8 @@
|
|||||||
gen year day:
|
gen year *day:
|
||||||
cargo run -- {{year}} {{day}}
|
cargo run -- {{year}} {{day}}
|
||||||
|
|
||||||
run year day:
|
run year day:
|
||||||
cargo run --package y{{year}} --bin d{{day}}
|
cargo run --package y{{year}} --bin d{{day}}
|
||||||
|
|
||||||
test year day *part='1':
|
test year day *part='1':
|
||||||
cargo test --package y{{year}} days::d{{day}}::tests::part{{part}} -- --nocapture
|
cargo test --package y{{year}} --lib days::d{{day}}::tests::part{{part}} -- --nocapture
|
||||||
|
@ -4,5 +4,6 @@ version = "0.1.0"
|
|||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
md5 = "0.7.0"
|
md5 = { workspace = true }
|
||||||
utils = { workspace = true }
|
utils = { workspace = true }
|
||||||
|
itertools = { workspace = true }
|
||||||
|
49
y2015/resources/23_input.txt
Normal file
49
y2015/resources/23_input.txt
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
jio a, +19
|
||||||
|
inc a
|
||||||
|
tpl a
|
||||||
|
inc a
|
||||||
|
tpl a
|
||||||
|
inc a
|
||||||
|
tpl a
|
||||||
|
tpl a
|
||||||
|
inc a
|
||||||
|
inc a
|
||||||
|
tpl a
|
||||||
|
tpl a
|
||||||
|
inc a
|
||||||
|
inc a
|
||||||
|
tpl a
|
||||||
|
inc a
|
||||||
|
inc a
|
||||||
|
tpl a
|
||||||
|
jmp +23
|
||||||
|
tpl a
|
||||||
|
tpl a
|
||||||
|
inc a
|
||||||
|
inc a
|
||||||
|
tpl a
|
||||||
|
inc a
|
||||||
|
inc a
|
||||||
|
tpl a
|
||||||
|
inc a
|
||||||
|
tpl a
|
||||||
|
inc a
|
||||||
|
tpl a
|
||||||
|
inc a
|
||||||
|
tpl a
|
||||||
|
inc a
|
||||||
|
inc a
|
||||||
|
tpl a
|
||||||
|
inc a
|
||||||
|
inc a
|
||||||
|
tpl a
|
||||||
|
tpl a
|
||||||
|
inc a
|
||||||
|
jio a, +8
|
||||||
|
inc b
|
||||||
|
jie a, +4
|
||||||
|
tpl a
|
||||||
|
inc a
|
||||||
|
jmp +2
|
||||||
|
hlf a
|
||||||
|
jmp -7
|
29
y2015/resources/24_input.txt
Normal file
29
y2015/resources/24_input.txt
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
5
|
||||||
|
7
|
||||||
|
13
|
||||||
|
17
|
||||||
|
19
|
||||||
|
23
|
||||||
|
29
|
||||||
|
31
|
||||||
|
37
|
||||||
|
41
|
||||||
|
43
|
||||||
|
53
|
||||||
|
59
|
||||||
|
61
|
||||||
|
67
|
||||||
|
71
|
||||||
|
73
|
||||||
|
79
|
||||||
|
83
|
||||||
|
89
|
||||||
|
97
|
||||||
|
101
|
||||||
|
103
|
||||||
|
107
|
||||||
|
109
|
||||||
|
113
|
1
y2015/resources/25_input.txt
Normal file
1
y2015/resources/25_input.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
To continue, please consult the code grid in the manual. Enter the code at row 2981, column 3075.
|
20
y2015/src/bin/d23.rs
Normal file
20
y2015/src/bin/d23.rs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
use std::fs;
|
||||||
|
|
||||||
|
use y2015::days::d23;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
part1();
|
||||||
|
part2();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part1() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/23_input.txt")).unwrap();
|
||||||
|
println!("{:?}", d23::process_part1(&content));
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/23_input.txt")).unwrap();
|
||||||
|
println!("{:?}", d23::process_part2(&content));
|
||||||
|
}
|
20
y2015/src/bin/d24.rs
Normal file
20
y2015/src/bin/d24.rs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
use std::fs;
|
||||||
|
|
||||||
|
use y2015::days::d24;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
part1();
|
||||||
|
part2();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part1() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/24_input.txt")).unwrap();
|
||||||
|
println!("{}", d24::process_part1(&content));
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/24_input.txt")).unwrap();
|
||||||
|
println!("{}", d24::process_part2(&content));
|
||||||
|
}
|
9
y2015/src/bin/d25.rs
Normal file
9
y2015/src/bin/d25.rs
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
use y2015::days::d25;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
part1();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part1() {
|
||||||
|
println!("{}", d25::process_part1(3075, 2981));
|
||||||
|
}
|
@ -24,20 +24,20 @@ pub fn process_part1(input: &str) -> u32 {
|
|||||||
};
|
};
|
||||||
let mut smallest = u32::MAX;
|
let mut smallest = u32::MAX;
|
||||||
let mut leafs = vec![start];
|
let mut leafs = vec![start];
|
||||||
let mut test = 0;
|
|
||||||
println!("start");
|
println!("start");
|
||||||
|
// Playing, Win, Loss
|
||||||
|
let mut stats = (0, 0, 0);
|
||||||
loop {
|
loop {
|
||||||
println!("iter: {test},");
|
|
||||||
let current_leafs = leafs.clone();
|
let current_leafs = leafs.clone();
|
||||||
println!("leaf count: {}", current_leafs.len());
|
|
||||||
leafs.clear();
|
leafs.clear();
|
||||||
// create potential rounds
|
// create potential rounds
|
||||||
for leaf in current_leafs {
|
for leaf in current_leafs {
|
||||||
if leaf.state == State::Playing {
|
if leaf.state == State::Playing {
|
||||||
//println!("try for leaf");
|
|
||||||
for spell in Spell::get_all() {
|
for spell in Spell::get_all() {
|
||||||
match spell.name {
|
match spell.name {
|
||||||
SpellID::MagicMissile | SpellID::Drain => {}
|
SpellID::MagicMissile | SpellID::Drain => {
|
||||||
|
leafs.push(leaf.use_spell(spell, false));
|
||||||
|
}
|
||||||
SpellID::Shield => {
|
SpellID::Shield => {
|
||||||
if !leaf
|
if !leaf
|
||||||
.player
|
.player
|
||||||
@ -45,68 +45,151 @@ pub fn process_part1(input: &str) -> u32 {
|
|||||||
.iter()
|
.iter()
|
||||||
.any(|effect| effect.name == SpellID::Shield && effect.duration > 1)
|
.any(|effect| effect.name == SpellID::Shield && effect.duration > 1)
|
||||||
{
|
{
|
||||||
continue;
|
leafs.push(leaf.use_spell(spell, false));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SpellID::Poison => {
|
SpellID::Poison => {
|
||||||
if !leaf
|
if !leaf
|
||||||
.player
|
.boss
|
||||||
.status_effects
|
.status_effects
|
||||||
.iter()
|
.iter()
|
||||||
.any(|effect| effect.name == SpellID::Poison && effect.duration > 1)
|
.any(|effect| effect.name == SpellID::Poison && effect.duration > 1)
|
||||||
{
|
{
|
||||||
continue;
|
leafs.push(leaf.use_spell(spell, false));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SpellID::Recharge => {
|
SpellID::Recharge => {
|
||||||
if !leaf.player.status_effects.iter().any(|effect| {
|
if !leaf.player.status_effects.iter().any(|effect| {
|
||||||
effect.name == SpellID::Recharge && effect.duration > 1
|
effect.name == SpellID::Recharge && effect.duration > 1
|
||||||
}) {
|
}) {
|
||||||
continue;
|
leafs.push(leaf.use_spell(spell, false));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
leafs.push(leaf.use_spell(spell));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//leafs.iter().for_each(|leaf| println!("{:?}", leaf));
|
||||||
}
|
}
|
||||||
|
println!("leaf count: {}", leafs.len());
|
||||||
|
stats.0 = 0;
|
||||||
for leaf in &leafs {
|
for leaf in &leafs {
|
||||||
if leaf.state == State::Win && leaf.spent_mana < smallest {
|
if leaf.state == State::Win && leaf.spent_mana < smallest {
|
||||||
smallest = leaf.spent_mana;
|
smallest = leaf.spent_mana;
|
||||||
}
|
}
|
||||||
|
match leaf.state {
|
||||||
|
State::Playing => stats.0 += 1,
|
||||||
|
State::Win => stats.1 += 1,
|
||||||
|
State::Loss => stats.2 += 1,
|
||||||
|
};
|
||||||
//println!(
|
//println!(
|
||||||
// "player hp: {}, boss hp: {}, spent mana so far: {}",
|
// "player hp: {}, boss hp: {}, spent mana so far: {}",
|
||||||
// leaf.player.hp, leaf.boss.hp, leaf.spent_mana
|
// leaf.player.hp, leaf.boss.hp, leaf.spent_mana
|
||||||
//);
|
//);
|
||||||
}
|
}
|
||||||
leafs = leafs
|
println!("Playing, win, loss: {stats:?}");
|
||||||
.clone()
|
leafs.retain(|leaf| leaf.state == State::Playing && leaf.spent_mana < smallest);
|
||||||
.iter()
|
|
||||||
.filter(|&leaf| leaf.state == State::Playing || leaf.spent_mana <= smallest)
|
|
||||||
.map(|leaf| leaf.to_owned())
|
|
||||||
.collect();
|
|
||||||
if leafs.is_empty() {
|
if leafs.is_empty() {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// already know it's higher than this
|
|
||||||
if smallest <= 2000 {
|
|
||||||
let mut count_losses = 0;
|
|
||||||
for leaf in leafs {
|
|
||||||
if leaf.state == State::Loss {
|
|
||||||
count_losses += 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
println!("Losses: {count_losses}");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
test += 1;
|
|
||||||
println!(" smallest: {smallest}");
|
println!(" smallest: {smallest}");
|
||||||
}
|
}
|
||||||
smallest
|
smallest
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn process_part2(input: &str) -> u32 {
|
pub fn process_part2(input: &str) -> u32 {
|
||||||
0
|
let mut boss = Character::default();
|
||||||
|
input.lines().for_each(|line| {
|
||||||
|
let (attribute, value) = line.split_once(": ").unwrap();
|
||||||
|
if attribute == "Hit Points" {
|
||||||
|
boss.hp = value.parse::<u32>().unwrap();
|
||||||
|
} else if attribute == "Damage" {
|
||||||
|
boss.damage = value.parse::<u32>().unwrap();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
let player = Character {
|
||||||
|
hp: 50,
|
||||||
|
mana: 500,
|
||||||
|
..Default::default()
|
||||||
|
};
|
||||||
|
// Initial state, nothing happened yet
|
||||||
|
let start = RoundNode {
|
||||||
|
player,
|
||||||
|
boss,
|
||||||
|
spent_mana: 0,
|
||||||
|
state: State::Playing,
|
||||||
|
};
|
||||||
|
let mut smallest = u32::MAX;
|
||||||
|
let mut leafs = vec![start];
|
||||||
|
println!("start");
|
||||||
|
// Playing, Win, Loss
|
||||||
|
let mut stats = (0, 0, 0);
|
||||||
|
loop {
|
||||||
|
let current_leafs = leafs.clone();
|
||||||
|
leafs.clear();
|
||||||
|
// create potential rounds
|
||||||
|
for leaf in current_leafs {
|
||||||
|
if leaf.state == State::Playing {
|
||||||
|
for spell in Spell::get_all() {
|
||||||
|
match spell.name {
|
||||||
|
SpellID::MagicMissile | SpellID::Drain => {
|
||||||
|
leafs.push(leaf.use_spell(spell, true));
|
||||||
|
}
|
||||||
|
SpellID::Shield => {
|
||||||
|
if !leaf
|
||||||
|
.player
|
||||||
|
.status_effects
|
||||||
|
.iter()
|
||||||
|
.any(|effect| effect.name == SpellID::Shield && effect.duration > 1)
|
||||||
|
{
|
||||||
|
leafs.push(leaf.use_spell(spell, true));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SpellID::Poison => {
|
||||||
|
if !leaf
|
||||||
|
.boss
|
||||||
|
.status_effects
|
||||||
|
.iter()
|
||||||
|
.any(|effect| effect.name == SpellID::Poison && effect.duration > 1)
|
||||||
|
{
|
||||||
|
leafs.push(leaf.use_spell(spell, true));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
SpellID::Recharge => {
|
||||||
|
if !leaf.player.status_effects.iter().any(|effect| {
|
||||||
|
effect.name == SpellID::Recharge && effect.duration > 1
|
||||||
|
}) {
|
||||||
|
leafs.push(leaf.use_spell(spell, true));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//leafs.iter().for_each(|leaf| println!("{:?}", leaf));
|
||||||
|
}
|
||||||
|
println!("leaf count: {}", leafs.len());
|
||||||
|
stats.0 = 0;
|
||||||
|
for leaf in &leafs {
|
||||||
|
if leaf.state == State::Win && leaf.spent_mana < smallest {
|
||||||
|
smallest = leaf.spent_mana;
|
||||||
|
}
|
||||||
|
match leaf.state {
|
||||||
|
State::Playing => stats.0 += 1,
|
||||||
|
State::Win => stats.1 += 1,
|
||||||
|
State::Loss => stats.2 += 1,
|
||||||
|
};
|
||||||
|
//println!(
|
||||||
|
// "player hp: {}, boss hp: {}, spent mana so far: {}",
|
||||||
|
// leaf.player.hp, leaf.boss.hp, leaf.spent_mana
|
||||||
|
//);
|
||||||
|
}
|
||||||
|
println!("Playing, win, loss: {stats:?}");
|
||||||
|
leafs.retain(|leaf| leaf.state == State::Playing && leaf.spent_mana < smallest);
|
||||||
|
if leafs.is_empty() {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
println!(" smallest: {smallest}");
|
||||||
|
}
|
||||||
|
smallest
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||||
@ -125,7 +208,7 @@ struct RoundNode {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl RoundNode {
|
impl RoundNode {
|
||||||
fn use_spell(&self, spell: Spell) -> RoundNode {
|
fn use_spell(&self, spell: Spell, hard_mode: bool) -> RoundNode {
|
||||||
if self.state != State::Playing {
|
if self.state != State::Playing {
|
||||||
eprintln!("State: {:#?}", self.state);
|
eprintln!("State: {:#?}", self.state);
|
||||||
eprintln!("spell: {spell:#?}");
|
eprintln!("spell: {spell:#?}");
|
||||||
@ -133,10 +216,25 @@ impl RoundNode {
|
|||||||
}
|
}
|
||||||
let mut player = self.player.clone();
|
let mut player = self.player.clone();
|
||||||
let mut boss = self.boss.clone();
|
let mut boss = self.boss.clone();
|
||||||
|
let mut recharge_actif = false;
|
||||||
|
if hard_mode {
|
||||||
|
player.hp -= 1;
|
||||||
|
}
|
||||||
|
if player.hp == 0 {
|
||||||
|
return RoundNode {
|
||||||
|
player,
|
||||||
|
boss,
|
||||||
|
spent_mana: spell.cost + self.spent_mana,
|
||||||
|
state: State::Loss,
|
||||||
|
};
|
||||||
|
}
|
||||||
// Player turn
|
// Player turn
|
||||||
for effect in player.status_effects.iter_mut() {
|
for effect in player.status_effects.iter_mut() {
|
||||||
if effect.name == SpellID::Recharge {
|
if effect.name == SpellID::Recharge {
|
||||||
player.mana += effect.mana;
|
player.mana += effect.mana;
|
||||||
|
if effect.duration > 1 {
|
||||||
|
recharge_actif = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
effect.duration -= 1;
|
effect.duration -= 1;
|
||||||
if effect.duration > 0 && effect.name == SpellID::Shield {
|
if effect.duration > 0 && effect.name == SpellID::Shield {
|
||||||
@ -167,8 +265,15 @@ impl RoundNode {
|
|||||||
.into_iter()
|
.into_iter()
|
||||||
.filter(|&effect| effect.duration > 0)
|
.filter(|&effect| effect.duration > 0)
|
||||||
.collect::<Vec<Spell>>();
|
.collect::<Vec<Spell>>();
|
||||||
let used_mana = spell.cost;
|
|
||||||
let mut dmg = 0;
|
let mut dmg = 0;
|
||||||
|
if player.mana < spell.cost {
|
||||||
|
return RoundNode {
|
||||||
|
player,
|
||||||
|
boss,
|
||||||
|
spent_mana: spell.cost + self.spent_mana,
|
||||||
|
state: State::Loss,
|
||||||
|
};
|
||||||
|
}
|
||||||
match spell.name {
|
match spell.name {
|
||||||
SpellID::MagicMissile => {
|
SpellID::MagicMissile => {
|
||||||
player.mana = player.mana.saturating_sub(spell.cost);
|
player.mana = player.mana.saturating_sub(spell.cost);
|
||||||
@ -198,15 +303,15 @@ impl RoundNode {
|
|||||||
return RoundNode {
|
return RoundNode {
|
||||||
player,
|
player,
|
||||||
boss,
|
boss,
|
||||||
spent_mana: used_mana + self.spent_mana,
|
spent_mana: spell.cost + self.spent_mana,
|
||||||
state: State::Win,
|
state: State::Win,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
if player.mana == 0 {
|
if player.mana == 0 && !recharge_actif {
|
||||||
return RoundNode {
|
return RoundNode {
|
||||||
player,
|
player,
|
||||||
boss,
|
boss,
|
||||||
spent_mana: used_mana + self.spent_mana,
|
spent_mana: spell.cost + self.spent_mana,
|
||||||
state: State::Loss,
|
state: State::Loss,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -236,7 +341,7 @@ impl RoundNode {
|
|||||||
return RoundNode {
|
return RoundNode {
|
||||||
player,
|
player,
|
||||||
boss,
|
boss,
|
||||||
spent_mana: used_mana + self.spent_mana,
|
spent_mana: spell.cost + self.spent_mana,
|
||||||
state: State::Win,
|
state: State::Win,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -252,14 +357,14 @@ impl RoundNode {
|
|||||||
return RoundNode {
|
return RoundNode {
|
||||||
player,
|
player,
|
||||||
boss,
|
boss,
|
||||||
spent_mana: used_mana + self.spent_mana,
|
spent_mana: spell.cost + self.spent_mana,
|
||||||
state: State::Loss,
|
state: State::Loss,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
RoundNode {
|
RoundNode {
|
||||||
player,
|
player,
|
||||||
boss,
|
boss,
|
||||||
spent_mana: used_mana + self.spent_mana,
|
spent_mana: spell.cost + self.spent_mana,
|
||||||
state: State::Playing,
|
state: State::Playing,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -401,17 +506,15 @@ mod tests {
|
|||||||
};
|
};
|
||||||
let mut smallest = u32::MAX;
|
let mut smallest = u32::MAX;
|
||||||
let mut leafs = vec![start];
|
let mut leafs = vec![start];
|
||||||
let mut test = 0;
|
|
||||||
println!("start");
|
println!("start");
|
||||||
loop {
|
loop {
|
||||||
println!("iter: {test},");
|
|
||||||
let current_leafs = leafs.clone();
|
let current_leafs = leafs.clone();
|
||||||
leafs.clear();
|
leafs.clear();
|
||||||
// create potential rounds
|
// create potential rounds
|
||||||
for leaf in current_leafs {
|
for leaf in current_leafs {
|
||||||
if leaf.state == State::Playing {
|
if leaf.state == State::Playing {
|
||||||
for spell in Spell::get_all() {
|
for spell in Spell::get_all() {
|
||||||
leafs.push(leaf.use_spell(spell));
|
leafs.push(leaf.use_spell(spell, false));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -423,15 +526,14 @@ mod tests {
|
|||||||
if leaf.state == State::Playing {
|
if leaf.state == State::Playing {
|
||||||
all_done = false;
|
all_done = false;
|
||||||
}
|
}
|
||||||
println!(
|
//println!(
|
||||||
"player hp: {}, boss hp: {}, spent mana so far: {}",
|
// "player hp: {}, boss hp: {}, spent mana so far: {}",
|
||||||
leaf.player.hp, leaf.boss.hp, leaf.spent_mana
|
// leaf.player.hp, leaf.boss.hp, leaf.spent_mana
|
||||||
);
|
//);
|
||||||
}
|
}
|
||||||
if all_done {
|
if all_done {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
test += 1;
|
|
||||||
println!(" smallest: {smallest}");
|
println!(" smallest: {smallest}");
|
||||||
}
|
}
|
||||||
assert_eq!(smallest, 226);
|
assert_eq!(smallest, 226);
|
||||||
@ -458,17 +560,15 @@ mod tests {
|
|||||||
};
|
};
|
||||||
let mut smallest = u32::MAX;
|
let mut smallest = u32::MAX;
|
||||||
let mut leafs = vec![start];
|
let mut leafs = vec![start];
|
||||||
let mut test = 0;
|
|
||||||
println!("start");
|
println!("start");
|
||||||
loop {
|
loop {
|
||||||
println!("iter: {test},");
|
|
||||||
let current_leafs = leafs.clone();
|
let current_leafs = leafs.clone();
|
||||||
leafs.clear();
|
leafs.clear();
|
||||||
// create potential rounds
|
// create potential rounds
|
||||||
for leaf in current_leafs {
|
for leaf in current_leafs {
|
||||||
if leaf.state == State::Playing {
|
if leaf.state == State::Playing {
|
||||||
for spell in Spell::get_all() {
|
for spell in Spell::get_all() {
|
||||||
leafs.push(leaf.use_spell(spell));
|
leafs.push(leaf.use_spell(spell, false));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -480,20 +580,34 @@ mod tests {
|
|||||||
if leaf.state == State::Playing {
|
if leaf.state == State::Playing {
|
||||||
all_done = false;
|
all_done = false;
|
||||||
}
|
}
|
||||||
println!(
|
//println!(
|
||||||
"player hp: {}, boss hp: {}, spent mana so far: {}",
|
// "player hp: {}, boss hp: {}, spent mana so far: {}",
|
||||||
leaf.player.hp, leaf.boss.hp, leaf.spent_mana
|
// leaf.player.hp, leaf.boss.hp, leaf.spent_mana
|
||||||
);
|
//);
|
||||||
}
|
}
|
||||||
if all_done {
|
if all_done {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
test += 1;
|
|
||||||
println!(" smallest: {smallest}");
|
println!(" smallest: {smallest}");
|
||||||
}
|
}
|
||||||
assert_eq!(smallest, 641);
|
assert_eq!(smallest, 641);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[allow(dead_code)]
|
||||||
|
fn init_characters() -> (Character, Character) {
|
||||||
|
let player = Character {
|
||||||
|
hp: 50,
|
||||||
|
mana: 500,
|
||||||
|
..Default::default()
|
||||||
|
};
|
||||||
|
let boss = Character {
|
||||||
|
hp: 14,
|
||||||
|
damage: 8,
|
||||||
|
..Default::default()
|
||||||
|
};
|
||||||
|
(player, boss)
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn part2() {
|
fn part2() {
|
||||||
let result = process_part2("");
|
let result = process_part2("");
|
||||||
|
155
y2015/src/days/d23.rs
Normal file
155
y2015/src/days/d23.rs
Normal file
@ -0,0 +1,155 @@
|
|||||||
|
use core::panic;
|
||||||
|
|
||||||
|
pub fn process_part1(input: &str) -> (i32, i32) {
|
||||||
|
let mut a = 0;
|
||||||
|
let mut b = 0;
|
||||||
|
let instructions = input
|
||||||
|
.lines()
|
||||||
|
.map(|line| line.to_string())
|
||||||
|
.collect::<Vec<String>>();
|
||||||
|
let mut idx: i32 = 0;
|
||||||
|
loop {
|
||||||
|
if let Some(instruction) = instructions.get(idx as usize) {
|
||||||
|
let (instruction_name, instruction_action) = instruction.split_once(" ").unwrap();
|
||||||
|
match instruction_name {
|
||||||
|
"hlf" => {
|
||||||
|
if instruction_action == "a" {
|
||||||
|
a /= 2;
|
||||||
|
} else if instruction_action == "b" {
|
||||||
|
b /= 2;
|
||||||
|
}
|
||||||
|
idx += 1;
|
||||||
|
}
|
||||||
|
"tpl" => {
|
||||||
|
if instruction_action == "a" {
|
||||||
|
a *= 3;
|
||||||
|
} else if instruction_action == "b" {
|
||||||
|
b *= 3;
|
||||||
|
}
|
||||||
|
idx += 1;
|
||||||
|
}
|
||||||
|
"inc" => {
|
||||||
|
if instruction_action == "a" {
|
||||||
|
a += 1;
|
||||||
|
} else if instruction_action == "b" {
|
||||||
|
b += 1;
|
||||||
|
}
|
||||||
|
idx += 1;
|
||||||
|
}
|
||||||
|
"jmp" => {
|
||||||
|
let offset = instruction_action.parse::<i32>().unwrap();
|
||||||
|
idx += offset;
|
||||||
|
}
|
||||||
|
"jie" => {
|
||||||
|
let (reg, offset) = instruction_action.split_once(", ").unwrap();
|
||||||
|
let offset: i32 = offset.parse().unwrap();
|
||||||
|
if (reg == "a" && a % 2 == 0) || (reg == "b" && b % 2 == 0) {
|
||||||
|
idx += offset;
|
||||||
|
} else {
|
||||||
|
idx += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"jio" => {
|
||||||
|
let (reg, offset) = instruction_action.split_once(", ").unwrap();
|
||||||
|
let offset: i32 = offset.parse().unwrap();
|
||||||
|
if (reg == "a" && a == 1) || (reg == "b" && b == 1) {
|
||||||
|
idx += offset;
|
||||||
|
} else {
|
||||||
|
idx += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_ => panic!("Unknown instruction {instruction_name}"),
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return (a, b);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn process_part2(input: &str) -> (i32, i32) {
|
||||||
|
let mut a = 1;
|
||||||
|
let mut b = 0;
|
||||||
|
let instructions = input
|
||||||
|
.lines()
|
||||||
|
.map(|line| line.to_string())
|
||||||
|
.collect::<Vec<String>>();
|
||||||
|
let mut idx: i32 = 0;
|
||||||
|
loop {
|
||||||
|
if let Some(instruction) = instructions.get(idx as usize) {
|
||||||
|
let (instruction_name, instruction_action) = instruction.split_once(" ").unwrap();
|
||||||
|
match instruction_name {
|
||||||
|
"hlf" => {
|
||||||
|
if instruction_action == "a" {
|
||||||
|
a /= 2;
|
||||||
|
} else if instruction_action == "b" {
|
||||||
|
b /= 2;
|
||||||
|
}
|
||||||
|
idx += 1;
|
||||||
|
}
|
||||||
|
"tpl" => {
|
||||||
|
if instruction_action == "a" {
|
||||||
|
a *= 3;
|
||||||
|
} else if instruction_action == "b" {
|
||||||
|
b *= 3;
|
||||||
|
}
|
||||||
|
idx += 1;
|
||||||
|
}
|
||||||
|
"inc" => {
|
||||||
|
if instruction_action == "a" {
|
||||||
|
a += 1;
|
||||||
|
} else if instruction_action == "b" {
|
||||||
|
b += 1;
|
||||||
|
}
|
||||||
|
idx += 1;
|
||||||
|
}
|
||||||
|
"jmp" => {
|
||||||
|
let offset = instruction_action.parse::<i32>().unwrap();
|
||||||
|
idx += offset;
|
||||||
|
}
|
||||||
|
"jie" => {
|
||||||
|
let (reg, offset) = instruction_action.split_once(", ").unwrap();
|
||||||
|
let offset: i32 = offset.parse().unwrap();
|
||||||
|
if (reg == "a" && a % 2 == 0) || (reg == "b" && b % 2 == 0) {
|
||||||
|
idx += offset;
|
||||||
|
} else {
|
||||||
|
idx += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"jio" => {
|
||||||
|
let (reg, offset) = instruction_action.split_once(", ").unwrap();
|
||||||
|
let offset: i32 = offset.parse().unwrap();
|
||||||
|
if (reg == "a" && a == 1) || (reg == "b" && b == 1) {
|
||||||
|
idx += offset;
|
||||||
|
} else {
|
||||||
|
idx += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_ => panic!("Unknown instruction {instruction_name}"),
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return (a, b);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
const INPUT: &str = "inc a
|
||||||
|
jio a, +2
|
||||||
|
tpl a
|
||||||
|
inc a";
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part1() {
|
||||||
|
let result = process_part1(INPUT);
|
||||||
|
assert_eq!(result.0, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part2() {
|
||||||
|
let result = process_part2(INPUT);
|
||||||
|
assert_eq!(result.0, 7);
|
||||||
|
}
|
||||||
|
}
|
106
y2015/src/days/d24.rs
Normal file
106
y2015/src/days/d24.rs
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
use itertools::Itertools;
|
||||||
|
|
||||||
|
#[derive(Clone, Debug, Default)]
|
||||||
|
struct Group {
|
||||||
|
packages: Vec<usize>,
|
||||||
|
weight: usize,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Group {
|
||||||
|
fn new(packages: Vec<usize>) -> Self {
|
||||||
|
let mut group = Self::default();
|
||||||
|
for package in packages {
|
||||||
|
group.add(package);
|
||||||
|
}
|
||||||
|
group
|
||||||
|
}
|
||||||
|
|
||||||
|
fn add(&mut self, package: usize) {
|
||||||
|
self.packages.push(package);
|
||||||
|
self.weight += package;
|
||||||
|
}
|
||||||
|
|
||||||
|
fn qe(&self) -> usize {
|
||||||
|
self.packages.iter().product()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn len(&self) -> usize {
|
||||||
|
self.packages.len()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn process_part1(input: &str) -> usize {
|
||||||
|
let packages = input
|
||||||
|
.lines()
|
||||||
|
.map(|line| line.parse::<usize>().unwrap())
|
||||||
|
.collect::<Vec<usize>>();
|
||||||
|
let group_weight = packages.iter().sum::<usize>() / 3;
|
||||||
|
let mut best_group = (usize::MAX, usize::MAX);
|
||||||
|
for k in 1..packages.len() {
|
||||||
|
let combinations = packages.clone().into_iter().combinations(k);
|
||||||
|
for combination in combinations {
|
||||||
|
let group = Group::new(combination.clone());
|
||||||
|
if group.weight == group_weight {
|
||||||
|
if group.len() < best_group.0 {
|
||||||
|
best_group = (group.len(), group.qe());
|
||||||
|
}
|
||||||
|
if group.len() == best_group.0 && group.qe() < best_group.1 {
|
||||||
|
best_group = (group.len(), group.qe());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
best_group.1
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn process_part2(input: &str) -> usize {
|
||||||
|
let packages = input
|
||||||
|
.lines()
|
||||||
|
.map(|line| line.parse::<usize>().unwrap())
|
||||||
|
.collect::<Vec<usize>>();
|
||||||
|
let group_weight = packages.iter().sum::<usize>() / 4;
|
||||||
|
let mut best_group = (usize::MAX, usize::MAX);
|
||||||
|
for k in 1..packages.len() {
|
||||||
|
let combinations = packages.clone().into_iter().combinations(k);
|
||||||
|
for combination in combinations {
|
||||||
|
let group = Group::new(combination.clone());
|
||||||
|
if group.weight == group_weight {
|
||||||
|
if group.len() < best_group.0 {
|
||||||
|
best_group = (group.len(), group.qe());
|
||||||
|
}
|
||||||
|
if group.len() == best_group.0 && group.qe() < best_group.1 {
|
||||||
|
best_group = (group.len(), group.qe());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
best_group.1
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
const INPUT: &str = "1
|
||||||
|
2
|
||||||
|
3
|
||||||
|
4
|
||||||
|
5
|
||||||
|
7
|
||||||
|
8
|
||||||
|
9
|
||||||
|
10
|
||||||
|
11";
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part1() {
|
||||||
|
let result = process_part1(INPUT);
|
||||||
|
assert_eq!(result, 99);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part2() {
|
||||||
|
let result = process_part2(INPUT);
|
||||||
|
assert_eq!(result, 44);
|
||||||
|
}
|
||||||
|
}
|
38
y2015/src/days/d25.rs
Normal file
38
y2015/src/days/d25.rs
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
use utils::number::Number;
|
||||||
|
|
||||||
|
// 31562160 too high
|
||||||
|
pub fn process_part1(x: u32, y: u32) -> Number {
|
||||||
|
// the grid is actually a pyramid
|
||||||
|
// 1
|
||||||
|
// 2 3
|
||||||
|
// 4 5 6
|
||||||
|
// etc
|
||||||
|
// Num on top == 20151125
|
||||||
|
let mut current = Number::from(20151125);
|
||||||
|
let mut starting_y_idx = 2;
|
||||||
|
loop {
|
||||||
|
let mut x_idx = 1;
|
||||||
|
for y_idx in (1..=starting_y_idx).rev() {
|
||||||
|
current *= Number::from(252533);
|
||||||
|
current %= Number::from(33554393);
|
||||||
|
if x_idx == x && y_idx == y {
|
||||||
|
return current;
|
||||||
|
}
|
||||||
|
x_idx += 1;
|
||||||
|
}
|
||||||
|
starting_y_idx += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part1() {
|
||||||
|
let result = process_part1(6, 6);
|
||||||
|
assert_eq!(result, 27995004.into());
|
||||||
|
let result = process_part1(1, 2);
|
||||||
|
assert_eq!(result, 31916031.into());
|
||||||
|
}
|
||||||
|
}
|
@ -8,7 +8,14 @@ pub mod d15;
|
|||||||
pub mod d16;
|
pub mod d16;
|
||||||
pub mod d17;
|
pub mod d17;
|
||||||
pub mod d18;
|
pub mod d18;
|
||||||
|
pub mod d19;
|
||||||
pub mod d2;
|
pub mod d2;
|
||||||
|
pub mod d20;
|
||||||
|
pub mod d21;
|
||||||
|
pub mod d22;
|
||||||
|
pub mod d23;
|
||||||
|
pub mod d24;
|
||||||
|
pub mod d25;
|
||||||
pub mod d3;
|
pub mod d3;
|
||||||
pub mod d4;
|
pub mod d4;
|
||||||
pub mod d5;
|
pub mod d5;
|
||||||
@ -16,11 +23,3 @@ pub mod d6;
|
|||||||
pub mod d7;
|
pub mod d7;
|
||||||
pub mod d8;
|
pub mod d8;
|
||||||
pub mod d9;
|
pub mod d9;
|
||||||
|
|
||||||
pub mod d19;
|
|
||||||
|
|
||||||
pub mod d20;
|
|
||||||
|
|
||||||
pub mod d21;
|
|
||||||
|
|
||||||
pub mod d22;
|
|
||||||
|
@ -4,3 +4,4 @@ version = "0.1.0"
|
|||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
md5 = { workspace = true }
|
||||||
|
1
y2016/resources/1_input.txt
Normal file
1
y2016/resources/1_input.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
L5, R1, L5, L1, R5, R1, R1, L4, L1, L3, R2, R4, L4, L1, L1, R2, R4, R3, L1, R4, L4, L5, L4, R4, L5, R1, R5, L2, R1, R3, L2, L4, L4, R1, L192, R5, R1, R4, L5, L4, R5, L1, L1, R48, R5, R5, L2, R4, R4, R1, R3, L1, L4, L5, R1, L4, L2, L5, R5, L2, R74, R4, L1, R188, R5, L4, L2, R5, R2, L4, R4, R3, R3, R2, R1, L3, L2, L5, L5, L2, L1, R1, R5, R4, L3, R5, L1, L3, R4, L1, L3, L2, R1, R3, R2, R5, L3, L1, L1, R5, L4, L5, R5, R2, L5, R2, L1, L5, L3, L5, L5, L1, R1, L4, L3, L1, R2, R5, L1, L3, R4, R5, L4, L1, R5, L1, R5, R5, R5, R2, R1, R2, L5, L5, L5, R4, L5, L4, L4, R5, L2, R1, R5, L1, L5, R4, L3, R4, L2, R3, R3, R3, L2, L2, L2, L1, L4, R3, L4, L2, R2, R5, L1, R2
|
5
y2016/resources/2_input.txt
Normal file
5
y2016/resources/2_input.txt
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
LLULLLRLDLLLRLUURDDLRDLDURULRLUULUDDUDDLLLURRLDRRLDRRRLDUDLRDLRRDLLDUDUDUDRLUDUUDLLLRDURUDUULUDLRDUUUDUUDURLDUULLRDLULDUURUDRDDLDRLURLRURRDUURLRLUURURUUULLRLLULRUURLULURDLLRRUDLUDULDRDRLRULUURRDRULLRUUUDLRLDLUURRRURDLUDDRRUDRLUDRDLLLLLRULLDUDRLRRDDULDLRUURRRRRLDLDLRDURDRUUURDLRDDDDULURRRRDUURLULLLDLRULRDULRUDLRRLRDLLRLLLUDDLRDRURDDLLLLDUDRDLRURRDLRDDDLDULDRLRULUUDRRRUUULLLURRDDUULURULDURRLLULLDRURUUULRLRDRRUDRDRRDURRUUUULDRDDDUDLDDURLLRR
|
||||||
|
LDLRRRUURDLDDRLRRDLLULRULLLUDUUDUDLRULLDRUDRULLDULURDRDDLRURDDULLLLDLRDRDRDDURLURLURLUDRDDRDULULUDDRURRDLLDUURDRDDLRLLURRDLRDDULDLULURDRDLUDRRUUDULLULURRDUDRUUUDRULDLDURLRRUDURLDLRRUURRRURDLUDRLDUDRRUDUURURUDDUUDRDULRDLUDRRRLDRURLLRDDDLUDRDUDURDDDRRDDRRRLLRRDDLDDLRUURRURDLLDRLRRDLLUDRRRURURLRDRLLRLRLRULLRURLDLRRULLRRRDULUUULDRDLLURDDLDLRDRLUUDLLUDDLDRRLDLRUDRUDLLUURLLULURUDUDRLULLUDRURDDLDLDDUDLRDDRRURLRLLUDDUDRUURRURRULDRLDDRLLRRLDDURRDLDULLLURULLLRUURLRRRRUUULRLLLURRLRLRUDRDUUUDUUUDDLULLDLLLLDLDRULDRUUULDDDLURLDLRLULRUDDDDURDDLU
|
||||||
|
RURLURRDLDULLULDDDLRUULLUURLRUDRUDRRUDDLDDDDRRDLRURLRURLDDDUDDUURRDRULDRRRULRDRDDLRUDULRLURDUUDRRLDLRDRURDLDRRRRDRURUUDDDLLRDRDUDUDUDLLULURULRRLRURUULUULDDDDURULRULLRUDUURLURDUDLUDLUDRLLDUUDUULRLRLUUDRDULDULRURDRRRULRUDLRURDDULUDULLRLRURURUULLULDRURLLRRUUDDUUURRDLURUURULRDRRDDUDULRDDLUDLURURUURDRULLRDDLLRDDLDRDUDRRDLUURRLRLUURRULUDURLDDRLLURRDDDLDDRURULLDDRLUDDLRLURDUDULLRDULLLDLLUDDRUDRUDDUUDRDRULRL
|
||||||
|
RLRDRDULULUDLUDRDRLUDLDLLUDURULDDDUDLRURLLRLRLDLDRLDURDLRRURLULLULURLLDRRDRLUDRLRDLLULRULURRURURUULRDUDLLRDLRRRRRLUURDRRRDLRUDLLDLLDLRUUUDLLLDDDLRDULLRUUDDRLDDURRRDLRLRLDDDDLRDRULLUURUUDRRLLRLLRDDLLRURRRRDRULRRLLRLLLRLDRRLDDDURRURLDURUURRLRLRLDRURULLRLRUDLDUURDLLRLDLURUUUDLLRDRDDDDDDRLDRRRLRRRRURUDLDDRDLLURUDLRRLDDDLUDUDUULRDULULUDDULUUDLLLLRLDDUUULRLRDULURDURRRURRULURRRDRDLDDURDLURUDURRRDDRLRLUDLUDDLUULLDURLURDDUDDLRUUUDRLLDRURL
|
||||||
|
ULUDLLUDDULRUURDRURDUDUDLUURDDDRRLUDURURDRURRLDRDURLRLLRRDDRRDRRRUULURUDURUDULRRRRDDLDURRLRRDUDDDRLLLULDRLRLURRDUURDURRRURRDLUDUDDRLDLURRRDDRLLRDRDDRDURRRRLURRLUDDURRULRUDUDULDRUDDRULLUUULDURRRLDRULLURULLRUDLDUDDLDULDLUUDRULULDLLDRULLRUULDUDUUDRLRRLDLUULUDLLDDRLRRDDLLURURDULRRDDRURDRLRLULDLDURULLUUUDURURDLDUDDDDUUULUDLUURRULLDLRLURDLURLRLDDURRLDDRRRDUUULLUULDLLDLLDDRLRRUDLULDRLULDULULRRLRULUUURURUUURDUUDDURLLUDDRLRDDLUURRUULRDLDDRLULUULRDRURLUURDRDUURUDLRR
|
1992
y2016/resources/3_input.txt
Normal file
1992
y2016/resources/3_input.txt
Normal file
File diff suppressed because it is too large
Load Diff
980
y2016/resources/4_input.txt
Normal file
980
y2016/resources/4_input.txt
Normal file
@ -0,0 +1,980 @@
|
|||||||
|
bkwzkqsxq-tovvilokx-nozvyiwoxd-172[fstek]
|
||||||
|
wifilzof-wbiwifuny-yhachyylcha-526[qrazx]
|
||||||
|
jvyyvzpcl-jhukf-shivyhavyf-487[zhtsi]
|
||||||
|
kwvacumz-ozilm-kivlg-kwvbiqvumvb-694[gknyw]
|
||||||
|
mvhkvbdib-kmjezxodgz-mvwwdo-omvdidib-837[dmvbi]
|
||||||
|
nzydfxpc-rclop-qwzhpc-lnbftdtetzy-171[cptzd]
|
||||||
|
vhehkyne-unggr-inkvatlbgz-813[gnehk]
|
||||||
|
tcorcikpi-hnqygt-octmgvkpi-570[nzewo]
|
||||||
|
xmtjbzidx-wvnfzo-jkzmvodjin-447[uyzlp]
|
||||||
|
willimcpy-mwupyhayl-bohn-mufym-734[stjoc]
|
||||||
|
sbejpbdujwf-cvooz-xpsltipq-961[azfnd]
|
||||||
|
jchipqat-qphzti-rjhidbtg-htgkxrt-271[thigj]
|
||||||
|
npmhcargjc-zsllw-pcqcypaf-158[mzwnx]
|
||||||
|
luxciuwncpy-jfumncw-alumm-qilembij-318[mucil]
|
||||||
|
bxaxipgn-vgpst-rpcsn-rdpixcv-htgkxrth-427[ywazt]
|
||||||
|
zekvierkzferc-tyftfcrkv-ivtvzmzex-295[evzfk]
|
||||||
|
enzcntvat-qlr-hfre-grfgvat-143[rtaef]
|
||||||
|
mvkccspson-bkllsd-nofovyzwoxd-224[oscdk]
|
||||||
|
enzcntvat-zvyvgnel-tenqr-pnaql-pbngvat-ratvarrevat-429[zymbs]
|
||||||
|
nwzekwypera-xwogap-pnwejejc-992[lkiwn]
|
||||||
|
ajmrxjlcren-ajkkrc-lxwcjrwvnwc-667[ezynd]
|
||||||
|
bxaxipgn-vgpst-hrpktcvtg-wjci-advxhixrh-661[lytku]
|
||||||
|
owshgfarwv-vqw-kzahhafy-190[ahwfv]
|
||||||
|
jqwpihizlwca-moo-twoqabqka-512[ncdyv]
|
||||||
|
apwmeclga-pyzzgr-rcaflmjmew-886[amceg]
|
||||||
|
tyepcyletzylw-ojp-wzrtdetnd-951[mxqsy]
|
||||||
|
dlhwvupglk-kfl-hjxbpzpapvu-773[nrotd]
|
||||||
|
fab-eqodqf-dmnnuf-bgdotmeuzs-612[dchyk]
|
||||||
|
qjopwxha-bhksan-skngodkl-940[kahno]
|
||||||
|
lsyrkjkbnyec-dyz-combod-cmkfoxqob-rexd-bomosfsxq-718[lktzs]
|
||||||
|
zixppfcfba-bdd-jxohbqfkd-939[sqtor]
|
||||||
|
vxupkizork-kmm-ktmotkkxotm-852[dsqjh]
|
||||||
|
excdklvo-mkxni-mykdsxq-nozkbdwoxd-952[zspmc]
|
||||||
|
bnqqnrhud-eknvdq-sqzhmhmf-391[qhndm]
|
||||||
|
gzefmnxq-otaoaxmfq-ogefayqd-eqdhuoq-716[zinwb]
|
||||||
|
qzoggwtwsr-qobrm-ghcfous-428[goqrs]
|
||||||
|
gpbepvxcv-ltpedcxots-qphzti-steadnbtci-193[ignjy]
|
||||||
|
hvbizodx-nxvqzibzm-cpio-hvmfzodib-265[hixfe]
|
||||||
|
wkqxodsm-lexxi-kxkvicsc-926[xkcis]
|
||||||
|
bknsykmdsfo-myxcewob-qbkno-oqq-zebmrkcsxq-380[utqrz]
|
||||||
|
lejkrscv-wcfnvi-kirzezex-711[ecikr]
|
||||||
|
htwwtxnaj-idj-btwpxmtu-255[itgmd]
|
||||||
|
zsxyfgqj-jll-ijufwyrjsy-931[wrpgt]
|
||||||
|
iuxxuyobk-yigbktmkx-natz-gtgreyoy-384[ygktx]
|
||||||
|
qjopwxha-xqjju-zalhkuiajp-628[esmxk]
|
||||||
|
lxaaxbren-ljwmh-anbnjalq-745[stjqy]
|
||||||
|
gokzyxsjon-zvkcdsm-qbkcc-dbksxsxq-380[tsyqk]
|
||||||
|
qzoggwtwsr-qobrm-qcohwbu-rsdofhasbh-168[obhqr]
|
||||||
|
pelbtravp-pnaql-fgbentr-325[pabel]
|
||||||
|
xzwrmkbqtm-akidmvomz-pcvb-mvoqvmmzqvo-122[mvoqz]
|
||||||
|
sbnqbhjoh-ezf-fohjoffsjoh-233[xskyb]
|
||||||
|
jyddc-yrwxefpi-fewoix-hiwmkr-412[pdekg]
|
||||||
|
fab-eqodqf-rxaiqd-xmnadmfadk-690[sicjl]
|
||||||
|
xcitgcpixdcpa-rpcsn-htgkxrth-427[stznv]
|
||||||
|
rflsjynh-rnqnyfwd-lwfij-jll-xytwflj-229[lfjnw]
|
||||||
|
zotts-wlsiayhcw-vumeyn-fuvilunils-500[ilsun]
|
||||||
|
odiih-yujbcrl-pajbb-dbna-cnbcrwp-147[bcadi]
|
||||||
|
udskkaxawv-tmffq-klgjsyw-996[tmnfc]
|
||||||
|
emixwvqhml-kpwkwtibm-wxmzibqwva-278[zomvn]
|
||||||
|
dfcxsqhwzs-dzoghwq-ufogg-zcuwghwqg-116[kmijn]
|
||||||
|
dwbcjkun-ouxfna-mnbrpw-745[nbuwa]
|
||||||
|
jchipqat-rwdrdapit-pcpanhxh-973[hglvu]
|
||||||
|
fkqbokxqflkxi-avb-zlkqxfkjbkq-861[wdnor]
|
||||||
|
wbhsfbohwcboz-foppwh-qighcasf-gsfjwqs-480[fhswb]
|
||||||
|
dzczkrip-xiruv-szfyrqriuflj-treup-kvtyefcfxp-451[rfipu]
|
||||||
|
fmsledevhsyw-fyrrc-eguymwmxmsr-698[yzoxu]
|
||||||
|
udskkaxawv-jsttal-wfyafwwjafy-840[nlkda]
|
||||||
|
sno-rdbqds-idkkxadzm-sqzhmhmf-287[lngzc]
|
||||||
|
crwwv-yxphbq-rpbo-qbpqfkd-341[bpqrw]
|
||||||
|
odiih-mhn-anjlzdrbrcrxw-563[xadcy]
|
||||||
|
jyddc-ikk-wlmttmrk-698[lmstk]
|
||||||
|
buzahisl-wshzapj-nyhzz-klzpnu-149[pjxor]
|
||||||
|
odkasqzuo-eomhqzsqd-tgzf-ymzmsqyqzf-560[frqmp]
|
||||||
|
gokzyxsjon-bkllsd-yzobkdsyxc-874[nbtmv]
|
||||||
|
excdklvo-pvygob-bocokbmr-952[tyzxa]
|
||||||
|
jvsvymbs-jovjvshal-aljouvsvnf-253[zgtdm]
|
||||||
|
hafgnoyr-qlr-erfrnepu-637[refna]
|
||||||
|
pelbtravp-sybjre-fnyrf-299[tjoim]
|
||||||
|
fodvvlilhg-gbh-vwrudjh-621[hvdgl]
|
||||||
|
kgjgrypw-epybc-bwc-bcnjmwkclr-678[smijy]
|
||||||
|
myxcewob-qbkno-mrymyvkdo-dbksxsxq-458[bkmox]
|
||||||
|
joufsobujpobm-fhh-dpoubjonfou-311[uvksy]
|
||||||
|
rflsjynh-ojqqdgjfs-ijajqturjsy-697[jqsfr]
|
||||||
|
vetllbybxw-vtgwr-kxtvjnblbmbhg-709[athym]
|
||||||
|
ajvyjprwp-ajmrxjlcren-kdwwh-lxwcjrwvnwc-433[qsaxt]
|
||||||
|
zbytomdsvo-mkxni-mykdsxq-myxdksxwoxd-952[xdmko]
|
||||||
|
esyfwlau-bwddqtwsf-suimakalagf-684[stvip]
|
||||||
|
jef-iushuj-fhezusjybu-fbqijys-whqii-huiuqhsx-582[uhijs]
|
||||||
|
tpspahyf-nyhkl-jovjvshal-bzly-alzapun-565[sdprn]
|
||||||
|
apwmeclga-hcjjwzcyl-umpiqfmn-132[shfrg]
|
||||||
|
kwtwznct-jcvvg-lmxizbumvb-148[vbcmt]
|
||||||
|
rmn-qcapcr-aylbw-umpiqfmn-366[juftv]
|
||||||
|
sorozgxe-mxgjk-hgyqkz-yzuxgmk-748[xuvst]
|
||||||
|
bkwzkqsxq-wsvsdkbi-qbkno-mkxni-mykdsxq-yzobkdsyxc-822[ksbqx]
|
||||||
|
ryexqpqhteki-vbemuh-skijecuh-iuhlysu-842[tszmj]
|
||||||
|
ikhcxvmbex-wrx-wxlbzg-501[zhqis]
|
||||||
|
lsyrkjkbnyec-mrymyvkdo-nozvyiwoxd-978[enkfi]
|
||||||
|
wdjcvuvmyjpn-mvhkvbdib-agjrzm-nojmvbz-395[tcxne]
|
||||||
|
uwtojhynqj-gfxpjy-fhvznxnynts-567[kqpvs]
|
||||||
|
iqmbazulqp-pkq-dqoquhuzs-534[ntpuq]
|
||||||
|
gntmfefwitzx-ojqqdgjfs-ijajqturjsy-385[jfqtg]
|
||||||
|
sebehvkb-fhezusjybu-zubboruqd-husuylydw-972[ytsim]
|
||||||
|
nzcczdtgp-nsznzwlep-hzcvdsza-405[yotgu]
|
||||||
|
joufsobujpobm-fhh-ufdiopmphz-675[tsymn]
|
||||||
|
cxy-bnlanc-snuuhknjw-anbnjalq-823[nabcj]
|
||||||
|
shoewudys-rkddo-huiuqhsx-374[dhsuo]
|
||||||
|
vagreangvbany-rtt-jbexfubc-403[ynepo]
|
||||||
|
aoubshwq-dzoghwq-ufogg-aobousasbh-714[oabgh]
|
||||||
|
njmjubsz-hsbef-dipdpmbuf-qvsdibtjoh-805[bdjsf]
|
||||||
|
zovldbkfz-gbiivybxk-lmboxqflkp-653[nyajo]
|
||||||
|
yknnkoera-xwogap-hkceopeyo-628[ybmzc]
|
||||||
|
nij-mywlyn-wbiwifuny-guleyncha-396[nyiwl]
|
||||||
|
ocipgvke-ecpfa-eqcvkpi-vgejpqnqia-258[jsiqz]
|
||||||
|
encuukhkgf-hnqygt-vgejpqnqia-882[dxzer]
|
||||||
|
odiih-ljwmh-anbnjalq-927[ahijl]
|
||||||
|
fkqbokxqflkxi-zxkav-ixyloxqlov-861[nxgja]
|
||||||
|
udskkaxawv-xmrrq-uzgugdslw-sfsdqkak-216[msfyx]
|
||||||
|
owshgfarwv-bwddqtwsf-kzahhafy-216[wafhd]
|
||||||
|
oaxadrgx-dmnnuf-ruzmzouzs-794[uqhse]
|
||||||
|
ziuxioqvo-akidmvomz-pcvb-zmikycqaqbqwv-616[iqvmo]
|
||||||
|
bqvvu-xqjju-opknwca-550[yzhum]
|
||||||
|
xgjougizobk-lruckx-gtgreyoy-670[nbfmk]
|
||||||
|
bxaxipgn-vgpst-uadltg-bpgztixcv-323[gptxa]
|
||||||
|
vcibutulxiom-jfumncw-alumm-nluchcha-448[ucmla]
|
||||||
|
irgyyolokj-xghhoz-uvkxgzouty-930[ogyhk]
|
||||||
|
kyelcrga-aylbw-amyrgle-umpiqfmn-782[almye]
|
||||||
|
jsvagsulanw-xdgowj-kzahhafy-138[dblcm]
|
||||||
|
ixccb-fkrfrodwh-uhdftxlvlwlrq-881[mblzw]
|
||||||
|
chnylhuncihuf-mwupyhayl-bohn-guleyncha-422[hnuyc]
|
||||||
|
irdgrxzex-treup-tfrkzex-uvgrikdvek-165[sjbnk]
|
||||||
|
xzwrmkbqtm-akidmvomz-pcvb-zmikycqaqbqwv-434[sanut]
|
||||||
|
ykhknbqh-zua-iwjwcaiajp-524[kjlio]
|
||||||
|
jlidywncfy-mwupyhayl-bohn-uwkocmcncih-916[cyhnw]
|
||||||
|
nuatmlmdpage-omzpk-eqdhuoqe-326[ljtsm]
|
||||||
|
xmrrq-kusnwfywj-zmfl-suimakalagf-684[afmkl]
|
||||||
|
foadouwbu-qvcqczohs-rsgwub-116[oubcq]
|
||||||
|
etyyx-bgnbnkzsd-kzanqzsnqx-391[pnmlv]
|
||||||
|
pinovwgz-wvnfzo-hvmfzodib-291[ovzfi]
|
||||||
|
qekrixmg-gsrwyqiv-kvehi-fewoix-ywiv-xiwxmrk-828[iwxek]
|
||||||
|
jqwpihizlwca-xtiabqk-oziaa-kcabwumz-amzdqkm-928[aizkm]
|
||||||
|
qekrixmg-jpsaiv-stivexmsrw-672[etmsq]
|
||||||
|
excdklvo-gokzyxsjon-mrymyvkdo-bomosfsxq-562[okmsx]
|
||||||
|
qczcftiz-pibbm-aobousasbh-532[zynvo]
|
||||||
|
wbhsfbohwcboz-suu-gsfjwqsg-506[bdhxv]
|
||||||
|
lxwbdvna-pajmn-ajkkrc-anlnrerwp-563[anrjk]
|
||||||
|
lsyrkjkbnyec-pvygob-cobfsmoc-900[uyrgf]
|
||||||
|
cqwdujys-sxesebqju-ixyffydw-374[nyjvi]
|
||||||
|
odiih-ouxfna-anlnrerwp-433[naior]
|
||||||
|
rzvkjiduzy-xviyt-xjvodib-vxlpdndodji-993[aousd]
|
||||||
|
ltpedcxots-qphzti-rjhidbtg-htgkxrt-453[rjlkn]
|
||||||
|
krxqjijamxdb-kdwwh-fxatbqxy-823[wctav]
|
||||||
|
froruixo-edvnhw-vwrudjh-829[rdhou]
|
||||||
|
jvyyvzpcl-jhukf-aljouvsvnf-201[uwkic]
|
||||||
|
nij-mywlyn-vumeyn-zchuhwcha-266[hnycm]
|
||||||
|
ydjuhdqjyedqb-zubboruqd-tufbeocudj-244[vmkln]
|
||||||
|
qlm-pbzobq-mixpqfz-doxpp-mrozexpfkd-575[zswni]
|
||||||
|
qvbmzvibqwvit-moo-tijwzibwzg-330[ibvwz]
|
||||||
|
pbeebfvir-fpniratre-uhag-freivprf-949[gvxlm]
|
||||||
|
wfummczcyx-jfumncw-alumm-uwkocmcncih-890[vturj]
|
||||||
|
dwbcjkun-npp-cajrwrwp-355[kstqo]
|
||||||
|
dpssptjwf-cbtlfu-vtfs-uftujoh-441[ftsuj]
|
||||||
|
vrurcjah-pajmn-npp-anbnjalq-303[tozvd]
|
||||||
|
wfruflnsl-ojqqdgjfs-xfqjx-775[fjqls]
|
||||||
|
pbafhzre-tenqr-qlr-qrirybczrag-897[yszub]
|
||||||
|
sehheiylu-rkddo-udwyduuhydw-322[qbyad]
|
||||||
|
upq-tfdsfu-cbtlfu-nbobhfnfou-103[vpxyh]
|
||||||
|
ajvyjprwp-npp-dbna-cnbcrwp-901[stevo]
|
||||||
|
bkzrrhehdc-bzmcx-bnzshmf-qdrdzqbg-833[msuya]
|
||||||
|
amlqskcp-epybc-aylbw-rcaflmjmew-730[arbyn]
|
||||||
|
wbhsfbohwcboz-dzoghwq-ufogg-gozsg-272[gobhw]
|
||||||
|
ksodcbwnsr-dfcxsqhwzs-gqojsbusf-vibh-obozmgwg-194[rwimn]
|
||||||
|
mfklstdw-usfvq-hmjuzskafy-424[ulgym]
|
||||||
|
wfruflnsl-ojqqdgjfs-qfgtwfytwd-177[xbofz]
|
||||||
|
sedikcuh-whqtu-isqludwuh-xkdj-jhqydydw-218[dhuqw]
|
||||||
|
ltpedcxots-raphhxuxts-qphzti-advxhixrh-765[jahpi]
|
||||||
|
zgmfyxypbmsq-djmucp-rcaflmjmew-548[aeoiv]
|
||||||
|
qspkfdujmf-ezf-nbobhfnfou-207[lnkrt]
|
||||||
|
fbebmtkr-zktwx-pxtihgbsxw-ietlmbv-zktll-kxlxtkva-943[hajmb]
|
||||||
|
apwmeclga-hcjjwzcyl-bctcjmnkclr-548[yxnzl]
|
||||||
|
rflsjynh-kqtbjw-btwpxmtu-177[tbjwf]
|
||||||
|
kfg-jvtivk-treup-uvgcfpdvek-373[vkefg]
|
||||||
|
upq-tfdsfu-kfmmzcfbo-nbobhfnfou-285[vsglz]
|
||||||
|
chnylhuncihuf-mwupyhayl-bohn-xypyfijgyhn-266[pwahm]
|
||||||
|
apwmeclga-zyqicr-dglylagle-886[lagce]
|
||||||
|
jlidywncfy-xsy-qilembij-188[uxjts]
|
||||||
|
jqwpihizlwca-lgm-lmaqov-954[laimq]
|
||||||
|
qcffcgwjs-foppwh-gozsg-246[fgcop]
|
||||||
|
bqxnfdmhb-rbzudmfdq-gtms-cdrhfm-287[dmbfh]
|
||||||
|
gifavtkzcv-wcfnvi-rthlzjzkzfe-763[tmniq]
|
||||||
|
uqtqbizg-ozilm-kivlg-kwibqvo-tijwzibwzg-720[qndzg]
|
||||||
|
sxdobxkdsyxkv-mkxni-bomosfsxq-848[zyubw]
|
||||||
|
qfmcusbwq-foppwh-kcfygvcd-662[cfpqw]
|
||||||
|
sehheiylu-fbqijys-whqii-skijecuh-iuhlysu-660[kdjyq]
|
||||||
|
sedikcuh-whqtu-uww-bqrehqjeho-660[dtawl]
|
||||||
|
veqtekmrk-wgezirkiv-lyrx-eguymwmxmsr-464[emrkg]
|
||||||
|
lqwhuqdwlrqdo-exqqb-uhdftxlvlwlrq-231[ydznk]
|
||||||
|
sno-rdbqds-bzmcx-otqbgzrhmf-183[gomah]
|
||||||
|
ujqgywfau-jsttal-hmjuzskafy-476[lghae]
|
||||||
|
yrwxefpi-jpsaiv-gsrxemrqirx-100[yazxo]
|
||||||
|
udglrdfwlyh-exqqb-sxufkdvlqj-569[dlqfu]
|
||||||
|
ugjjgkanw-uzgugdslw-esjcwlafy-736[rnxjs]
|
||||||
|
pdjqhwlf-sodvwlf-judvv-orjlvwlfv-673[vldfj]
|
||||||
|
xekdwvwnzkqo-fahhuxawj-ajcejaanejc-524[ajewc]
|
||||||
|
pwcvonofrcig-pibbm-fsqswjwbu-766[myazu]
|
||||||
|
tcrjjzwzvu-wcfnvi-glityrjzex-893[bkuyx]
|
||||||
|
lugjuacha-wbiwifuny-omyl-nymncha-448[mosph]
|
||||||
|
ckgvutofkj-inuiurgzk-jkvgxzsktz-228[kguzi]
|
||||||
|
ydjuhdqjyedqb-sqdto-ijehqwu-868[ozqsj]
|
||||||
|
sxdobxkdsyxkv-zvkcdsm-qbkcc-myxdksxwoxd-640[xdksc]
|
||||||
|
odkasqzuo-dmnnuf-dqmocgueufuaz-482[wfbke]
|
||||||
|
wpuvcdng-tcddkv-wugt-vguvkpi-414[hayjs]
|
||||||
|
lqwhuqdwlrqdo-edvnhw-uhfhlylqj-439[bjzye]
|
||||||
|
wpuvcdng-dwppa-ceswkukvkqp-674[mxnkj]
|
||||||
|
qzlozfhmf-bkzrrhehdc-okzrshb-fqzrr-zbpthrhshnm-365[hrzbf]
|
||||||
|
raphhxuxts-rpcsn-rdpixcv-rjhidbtg-htgkxrt-635[yozvr]
|
||||||
|
tfejldvi-xiruv-gcrjkzt-xirjj-tljkfdvi-jvimztv-321[veyxs]
|
||||||
|
ryexqpqhteki-sxesebqju-iqbui-868[qebar]
|
||||||
|
eqpuwogt-itcfg-hnqygt-tgegkxkpi-648[ywzjl]
|
||||||
|
uzfqdzmfuazmx-pkq-bgdotmeuzs-482[zmudf]
|
||||||
|
sbnqbhjoh-cbtlfu-bdrvjtjujpo-441[taquv]
|
||||||
|
gokzyxsjon-bkwzkqsxq-lexxi-bomosfsxq-354[xoskq]
|
||||||
|
oazegyqd-sdmpq-iqmbazulqp-dmnnuf-geqd-fqefuzs-456[qdefm]
|
||||||
|
dwbcjkun-ljwmh-lxjcrwp-anbnjalq-875[hoynm]
|
||||||
|
udskkaxawv-eadalsjq-yjsvw-xdgowj-klgjsyw-216[cnwyi]
|
||||||
|
surmhfwloh-exqqb-sxufkdvlqj-439[tspmq]
|
||||||
|
ksodcbwnsr-foppwh-zcuwghwqg-402[vopuk]
|
||||||
|
zsxyfgqj-hmthtqfyj-fhvznxnynts-697[fhnty]
|
||||||
|
yflexwxoalrp-yxphbq-bkdfkbbofkd-653[jzvpm]
|
||||||
|
ltpedcxots-tvv-rdcipxcbtci-557[ctdip]
|
||||||
|
slqryzjc-djmucp-qyjcq-756[cjqyd]
|
||||||
|
rgndvtcxr-qphzti-bpcpvtbtci-817[tcpbi]
|
||||||
|
ftzgxmbv-fbebmtkr-zktwx-vtgwr-vhtmbgz-lmhktzx-371[wzxvl]
|
||||||
|
htqtwkzq-hfsid-yjhmstqtld-463[rxszy]
|
||||||
|
rwcnawjcrxwju-yujbcrl-pajbb-mnenuxyvnwc-979[gkutb]
|
||||||
|
gokzyxsjon-tovvilokx-kmaescsdsyx-562[dwlah]
|
||||||
|
iutyaskx-mxgjk-lruckx-iayzuskx-ykxboik-826[kxiuy]
|
||||||
|
vhglnfxk-zktwx-yehpxk-hixktmbhgl-891[diznt]
|
||||||
|
sedikcuh-whqtu-kdijqrbu-sqdto-seqjydw-iuhlysui-790[lksjh]
|
||||||
|
jyfvnlupj-zjhclunly-obua-vwlyhapvuz-617[pirsw]
|
||||||
|
iuruxlar-sgmtkzoi-hgyqkz-zkinturume-670[qatsn]
|
||||||
|
wkqxodsm-mrymyvkdo-mecdywob-cobfsmo-250[hgarm]
|
||||||
|
odiih-kjbtnc-nwprwnnarwp-381[qpodn]
|
||||||
|
kfg-jvtivk-tyftfcrkv-kirzezex-373[srcvd]
|
||||||
|
gcfcnuls-aluxy-zotts-wuhxs-omyl-nymncha-552[clnsu]
|
||||||
|
xmtjbzidx-zbb-xpnojhzm-nzmqdxz-421[mnkio]
|
||||||
|
qjopwxha-acc-iwngapejc-160[jimst]
|
||||||
|
emixwvqhml-kivlg-kwibqvo-aitma-564[qspyb]
|
||||||
|
nvrgfezqvu-avccpsvre-cfxzjkztj-529[lmnsh]
|
||||||
|
emixwvqhml-ktiaaqnqml-xtiabqk-oziaa-ikycqaqbqwv-746[ozadu]
|
||||||
|
zhdsrqlchg-hjj-orjlvwlfv-751[hjlrv]
|
||||||
|
cybyjqho-whqtu-uww-qsgkyiyjyed-478[szxuo]
|
||||||
|
clxalrtyr-nsznzwlep-wzrtdetnd-405[lnrtz]
|
||||||
|
sgmtkzoi-yigbktmkx-natz-rghuxgzuxe-722[gktxz]
|
||||||
|
hjgbwuladw-tskcwl-sfsdqkak-502[txdsw]
|
||||||
|
yrwxefpi-hci-vigimzmrk-646[hdmzy]
|
||||||
|
hqcfqwydw-hqrryj-jusxdebewo-946[qwdeh]
|
||||||
|
wsvsdkbi-qbkno-cmkfoxqob-rexd-yzobkdsyxc-276[wptxs]
|
||||||
|
qfmcusbwq-qvcqczohs-zcuwghwqg-870[mnybx]
|
||||||
|
clxalrtyr-nsznzwlep-cpdplcns-743[rtycz]
|
||||||
|
fbebmtkr-zktwx-ktuubm-ybgtgvbgz-553[osmdy]
|
||||||
|
jvuzbtly-nyhkl-yhtwhnpun-jovjvshal-ylzlhyjo-773[hlyjn]
|
||||||
|
slqryzjc-aylbw-pcacgtgle-782[nxkri]
|
||||||
|
tfcfiwlc-wcfnvi-wzeretzex-971[smobe]
|
||||||
|
jef-iushuj-uww-qsgkyiyjyed-556[xzrwq]
|
||||||
|
crwwv-yxphbq-xkxivpfp-653[pxvwb]
|
||||||
|
hqcfqwydw-zubboruqd-husuylydw-244[lqeho]
|
||||||
|
oxmeeuruqp-qss-eqdhuoqe-534[equos]
|
||||||
|
qxdwpopgsdjh-rgndvtcxr-gpqqxi-gthtpgrw-687[gpdqr]
|
||||||
|
mybbycsfo-mrymyvkdo-bocokbmr-692[pymza]
|
||||||
|
myvybpev-oqq-yzobkdsyxc-250[sxytw]
|
||||||
|
fnjyxwrinm-kdwwh-uxprbcrlb-329[natqu]
|
||||||
|
aietsrmdih-nippcfier-gsrxemrqirx-958[iremp]
|
||||||
|
xmrrq-tmffq-vwhdgqewfl-138[fqmrw]
|
||||||
|
oqnidbshkd-bzmcx-sdbgmnknfx-599[nzdyx]
|
||||||
|
eqttqukxg-ecpfa-eqcvkpi-ewuvqogt-ugtxkeg-128[mytkp]
|
||||||
|
nchhg-ntwemz-amzdqkma-252[kmbop]
|
||||||
|
bjfutsneji-jll-zxjw-yjxynsl-775[ndbsw]
|
||||||
|
ktwbhtvmbox-lvtoxgzxk-angm-mxvaghehzr-319[ijqxb]
|
||||||
|
kyelcrga-afmamjyrc-pcqcypaf-210[acyfm]
|
||||||
|
myxcewob-qbkno-mkxni-oxqsxoobsxq-484[oxbqk]
|
||||||
|
esyfwlau-vqw-kzahhafy-788[jikae]
|
||||||
|
oqnidbshkd-eknvdq-btrsnldq-rdquhbd-391[njzml]
|
||||||
|
qjopwxha-bhksan-opknwca-888[ahkno]
|
||||||
|
udskkaxawv-jsttal-vwhdgqewfl-190[hqmnt]
|
||||||
|
excdklvo-lexxi-crszzsxq-458[uavnl]
|
||||||
|
frqvxphu-judgh-fdqgb-frdwlqj-wudlqlqj-179[bimaq]
|
||||||
|
iuruxlar-kmm-ykxboiky-852[tijpz]
|
||||||
|
tyepcyletzylw-mldvpe-lylwjdtd-509[lydet]
|
||||||
|
frqvxphu-judgh-gbh-whfkqrorjb-101[mhbes]
|
||||||
|
xqvwdeoh-edvnhw-zrunvkrs-699[zmudw]
|
||||||
|
irdgrxzex-treup-fgvirkzfej-893[fbsyn]
|
||||||
|
cxy-bnlanc-ljwmh-orwjwlrwp-771[ngpmz]
|
||||||
|
eqpuwogt-itcfg-gii-ucngu-388[hzgae]
|
||||||
|
ikhcxvmbex-cxeeruxtg-wxlbzg-553[mvnfs]
|
||||||
|
mrxivrexmsrep-fyrrc-asvowlst-854[codsq]
|
||||||
|
npmhcargjc-aylbw-qcptgacq-366[ditsg]
|
||||||
|
ftzgxmbv-ietlmbv-zktll-phkdlahi-241[ltbhi]
|
||||||
|
hqcfqwydw-tou-bewyijysi-270[hnvux]
|
||||||
|
emixwvqhml-kivlg-abwziom-590[imlvw]
|
||||||
|
pejji-nio-mecdywob-cobfsmo-926[wrjmp]
|
||||||
|
bknsykmdsfo-oqq-dbksxsxq-640[naysz]
|
||||||
|
gifavtkzcv-vxx-tfekrzedvek-789[cnwtp]
|
||||||
|
kmjezxodgz-diozmivodjivg-agjrzm-xjiovdihzio-915[yqktj]
|
||||||
|
shoewudys-vbemuh-qsgkyiyjyed-946[nqsjd]
|
||||||
|
htqtwkzq-ojqqdgjfs-rfwpjynsl-749[hryqo]
|
||||||
|
rmn-qcapcr-zyqicr-pcacgtgle-340[znstw]
|
||||||
|
bnqqnrhud-bzmcx-bnmszhmldms-729[yfetv]
|
||||||
|
surmhfwloh-gbh-rshudwlrqv-725[dsaym]
|
||||||
|
jchipqat-tvv-itrwcdadvn-505[povhu]
|
||||||
|
zgmfyxypbmsq-njyqrga-epyqq-rcaflmjmew-340[mqyae]
|
||||||
|
froruixo-exqqb-pdunhwlqj-283[nmuqd]
|
||||||
|
lnkfaypeha-xwogap-odellejc-784[ytrsz]
|
||||||
|
jlidywncfy-xsy-fuvilunils-864[ilyfn]
|
||||||
|
joufsobujpobm-dipdpmbuf-sftfbsdi-545[rwjnm]
|
||||||
|
tvsnigxmpi-gerhc-gsexmrk-eguymwmxmsr-932[pivem]
|
||||||
|
tfejldvi-xiruv-srjbvk-ivjvrity-815[vijrt]
|
||||||
|
zuv-ykixkz-yigbktmkx-natz-zkinturume-410[kzitu]
|
||||||
|
enzcntvat-pubpbyngr-qrcyblzrag-117[oywbs]
|
||||||
|
wsvsdkbi-qbkno-lkcuod-nofovyzwoxd-744[xnuqc]
|
||||||
|
wbhsfbohwcboz-foppwh-aobousasbh-246[nfsml]
|
||||||
|
uiovmbqk-jcvvg-abwziom-720[nbqaz]
|
||||||
|
etaqigpke-fag-fgrnqaogpv-674[gaefp]
|
||||||
|
ejpanjwpekjwh-nwxxep-hkceopeyo-238[bmscu]
|
||||||
|
qjopwxha-bhksan-wjwhuoeo-940[xenwh]
|
||||||
|
etyyx-bzmcx-bnzshmf-qdzbpthrhshnm-729[hbmzn]
|
||||||
|
uqtqbizg-ozilm-lgm-abwziom-356[tspmz]
|
||||||
|
excdklvo-mybbycsfo-tovvilokx-psxkxmsxq-874[axwon]
|
||||||
|
mvydjvxodqz-xviyt-xjvodib-pnzm-oznodib-187[nflym]
|
||||||
|
ixccb-zhdsrqlchg-edvnhw-xvhu-whvwlqj-465[hcvwd]
|
||||||
|
qspkfdujmf-votubcmf-tdbwfohfs-ivou-bdrvjtjujpo-181[esuzg]
|
||||||
|
fkqbokxqflkxi-qlm-pbzobq-bdd-jxohbqfkd-601[dcgym]
|
||||||
|
mtzslklcozfd-prr-nfdezxpc-dpcgtnp-301[tmnrk]
|
||||||
|
xekdwvwnzkqo-lhwopey-cnwoo-wymqeoepekj-290[rzsnk]
|
||||||
|
fubrjhqlf-sodvwlf-judvv-pdqdjhphqw-725[dfhjq]
|
||||||
|
shoewudys-zubboruqd-skijecuh-iuhlysu-608[ushbd]
|
||||||
|
zlkprjbo-doxab-zxkav-rpbo-qbpqfkd-679[bkopa]
|
||||||
|
nzcczdtgp-mldvpe-opawzjxpye-587[tkbms]
|
||||||
|
apuut-nxvqzibzm-cpio-yzkvmohzio-655[rsozd]
|
||||||
|
rgllk-ngzzk-ymdwqfuzs-300[yhzxu]
|
||||||
|
cvabijtm-jcvvg-uiviomumvb-538[ixajz]
|
||||||
|
oazegyqd-sdmpq-otaoaxmfq-pqbmdfyqzf-248[qadfm]
|
||||||
|
rtqlgevkng-fag-nqikuvkeu-960[nqdom]
|
||||||
|
bnknqetk-cxd-cdrhfm-183[mfpwa]
|
||||||
|
ohmnuvfy-wuhxs-wiuncha-lyuwkocmcncih-552[chunw]
|
||||||
|
hqtyeqsjylu-jef-iushuj-tou-fkhsxqiydw-296[isfmy]
|
||||||
|
kwtwznct-kwvacumz-ozilm-jiasmb-uiviomumvb-746[qmjyz]
|
||||||
|
qfmcusbwq-foppwh-twbobqwbu-298[bwqfo]
|
||||||
|
ykhknbqh-xqjju-owhao-472[hjtck]
|
||||||
|
dszphfojd-tdbwfohfs-ivou-mbcpsbupsz-103[sbdfo]
|
||||||
|
lahxpnwrl-ljwmh-nwprwnnarwp-641[srtpm]
|
||||||
|
ckgvutofkj-lruckx-jkvruesktz-878[zjlyk]
|
||||||
|
dyz-combod-zvkcdsm-qbkcc-nocsqx-926[yvute]
|
||||||
|
ktwbhtvmbox-wrx-nlxk-mxlmbgz-345[lsuwt]
|
||||||
|
nwilwcejc-nwxxep-zalhkuiajp-186[bznxr]
|
||||||
|
uzfqdzmfuazmx-otaoaxmfq-bgdotmeuzs-846[mzafo]
|
||||||
|
oxmeeuruqp-omzpk-oamfuzs-oazfmuzyqzf-352[ypdzg]
|
||||||
|
zhdsrqlchg-fdqgb-ghsduwphqw-361[hdgqs]
|
||||||
|
nchhg-jiasmb-amzdqkma-278[qklti]
|
||||||
|
tfiifjzmv-upv-wzeretzex-295[itvos]
|
||||||
|
eqttqukxg-ecpfa-ujkrrkpi-830[kepqr]
|
||||||
|
clotzlnetgp-mldvpe-nzyeltyxpye-145[xfpsy]
|
||||||
|
mbiyqoxsm-myvybpev-mkxni-mykdsxq-yzobkdsyxc-900[ymxbk]
|
||||||
|
plolwdub-judgh-vfdyhqjhu-kxqw-vhuylfhv-621[zqwmy]
|
||||||
|
atyzghrk-vxupkizork-jek-giwaoyozout-228[abrmv]
|
||||||
|
zotts-xsy-mufym-162[mstyf]
|
||||||
|
vhehkyne-ktuubm-mktbgbgz-293[qmytr]
|
||||||
|
kwvacumz-ozilm-zijjqb-ivitgaqa-616[fkoxt]
|
||||||
|
yaxsnlcrun-ajvyjprwp-snuuhknjw-anlnrerwp-771[zpyld]
|
||||||
|
raphhxuxts-bpvctixr-eaphixr-vgphh-bpcpvtbtci-115[phtxb]
|
||||||
|
nuatmlmdpage-odkasqzuo-qss-dqmocgueufuaz-768[umnqw]
|
||||||
|
yknnkoera-lhwopey-cnwoo-nawymqeoepekj-680[eonkw]
|
||||||
|
pybgmyargtc-aylbw-qyjcq-886[buzfp]
|
||||||
|
gzefmnxq-ngzzk-iadwetab-638[zaegn]
|
||||||
|
sbnqbhjoh-kfmmzcfbo-usbjojoh-129[acdkb]
|
||||||
|
lxaaxbren-lujbbrornm-ljwmh-lxjcrwp-mnyjacvnwc-355[yzsuk]
|
||||||
|
nchhg-lgm-nqvivkqvo-200[dystz]
|
||||||
|
plolwdub-judgh-udeelw-rshudwlrqv-335[sihdt]
|
||||||
|
wlsiayhcw-vumeyn-lymyulwb-292[zbrux]
|
||||||
|
ytu-xjhwjy-hfsid-htfynsl-qtlnxynhx-411[adxmu]
|
||||||
|
wkqxodsm-tovvilokx-ckvoc-822[uhgov]
|
||||||
|
chnylhuncihuf-vumeyn-nluchcha-500[rcbmn]
|
||||||
|
tfiifjzmv-lejkrscv-tyftfcrkv-jyzggzex-243[fjtvz]
|
||||||
|
eqpuwogt-itcfg-tcddkv-tgugctej-310[pyemh]
|
||||||
|
iuruxlar-xgsvgmotm-pkrrehkgt-xkykgxin-956[btwqp]
|
||||||
|
shoewudys-sxesebqju-qdqboiyi-894[seqbd]
|
||||||
|
zlkprjbo-doxab-gbiivybxk-pxibp-861[azyjx]
|
||||||
|
ckgvutofkj-inuiurgzk-lotgtiotm-982[qszly]
|
||||||
|
thnulapj-jshzzpmplk-jhukf-vwlyhapvuz-747[hpjlu]
|
||||||
|
pybgmyargtc-hcjjwzcyl-qcptgacq-782[bxsuc]
|
||||||
|
xgsvgmotm-vrgyzoi-mxgyy-iutzgotsktz-150[gtmoy]
|
||||||
|
laffe-yigbktmkx-natz-jkyomt-696[ktafm]
|
||||||
|
zvyvgnel-tenqr-pubpbyngr-znexrgvat-507[wfjhu]
|
||||||
|
pelbtravp-pnaql-znantrzrag-403[cbyja]
|
||||||
|
jqwpihizlwca-akidmvomz-pcvb-apqxxqvo-850[oxymv]
|
||||||
|
cvabijtm-ntwemz-twoqabqka-954[atbmq]
|
||||||
|
zixppfcfba-avb-zlkqxfkjbkq-809[zlmjc]
|
||||||
|
sebehvkb-zubboruqd-tufqhjcudj-556[budeh]
|
||||||
|
lqwhuqdwlrqdo-fdqgb-ghvljq-621[qdlgh]
|
||||||
|
qlm-pbzobq-crwwv-zxkav-zlxqfkd-rpbo-qbpqfkd-731[ciyxw]
|
||||||
|
pwcvonofrcig-gqojsbusf-vibh-qighcasf-gsfjwqs-740[csebm]
|
||||||
|
mvydjvxodqz-kmjezxodgz-kgvnodx-bmvnn-yzqzgjkhzio-239[zdovg]
|
||||||
|
kzgwomvqk-xtiabqk-oziaa-tijwzibwzg-564[menyj]
|
||||||
|
ksodcbwnsr-xszzmpsob-kcfygvcd-454[mbaod]
|
||||||
|
ejpanjwpekjwh-xwogap-hwxknwpknu-472[wpjkn]
|
||||||
|
mvydjvxodqz-hvbizodx-wpiit-hvivbzhzio-967[ivzdh]
|
||||||
|
mvydjvxodqz-mvwwdo-nzmqdxzn-681[jryzk]
|
||||||
|
enqvbnpgvir-rtt-freivprf-871[lgqrc]
|
||||||
|
hvbizodx-wpiit-kpmxcvndib-291[dyjmn]
|
||||||
|
molgbzqfib-mixpqfz-doxpp-xkxivpfp-965[pxfib]
|
||||||
|
fbebmtkr-zktwx-cxeeruxtg-nlxk-mxlmbgz-137[dckut]
|
||||||
|
luxciuwncpy-luvvcn-mbcjjcha-500[qsvzt]
|
||||||
|
apwmeclga-hcjjwzcyl-qyjcq-704[cjalq]
|
||||||
|
wpuvcdng-eqttqukxg-uecxgpigt-jwpv-cpcnauku-830[ucgpt]
|
||||||
|
iehepwnu-cnwza-fahhuxawj-pnwejejc-940[ewahj]
|
||||||
|
pbybeshy-pbeebfvir-pnaql-pbngvat-freivprf-715[uyzwp]
|
||||||
|
htsxzrjw-lwfij-ojqqdgjfs-zxjw-yjxynsl-957[iyonc]
|
||||||
|
sxdobxkdsyxkv-wsvsdkbi-qbkno-zvkcdsm-qbkcc-bomosfsxq-536[mbyan]
|
||||||
|
fruurvlyh-fkrfrodwh-uhdftxlvlwlrq-335[rflhu]
|
||||||
|
froruixo-hjj-orjlvwlfv-387[uyawn]
|
||||||
|
myvybpev-lexxi-vklybkdybi-978[ybvei]
|
||||||
|
chnylhuncihuf-vohhs-xymcah-240[yxnmh]
|
||||||
|
tagzsrsjvgmk-vqw-vwhsjlewfl-606[svwgj]
|
||||||
|
zbytomdsvo-lexxi-domrxyvyqi-250[oxydi]
|
||||||
|
qfkkj-clmmte-opgpwzaxpye-821[pekma]
|
||||||
|
lgh-kwujwl-udskkaxawv-jsttal-hmjuzskafy-320[axyrm]
|
||||||
|
irdgrxzex-nvrgfezqvu-avccpsvre-cfxzjkztj-191[sclzh]
|
||||||
|
mhi-lxvkxm-xzz-etuhktmhkr-319[rcomn]
|
||||||
|
lhkhszqx-fqzcd-dff-sdbgmnknfx-391[ugevx]
|
||||||
|
apwmeclga-aylbw-ylyjwqgq-314[izfye]
|
||||||
|
yflexwxoalrp-zlkprjbo-doxab-ciltbo-qbzeklildv-341[byclp]
|
||||||
|
cvabijtm-kwzzwaqdm-ntwemz-abwziom-252[rdmvn]
|
||||||
|
qfkkj-upwwjmply-epnsyzwzrj-899[okhgz]
|
||||||
|
jxdkbqfz-avb-zlkqxfkjbkq-861[wptxb]
|
||||||
|
gpsxdprixkt-qphzti-hwxeexcv-947[krgwe]
|
||||||
|
nij-mywlyn-wuhxs-wiuncha-lymyulwb-968[wylnu]
|
||||||
|
sbnqbhjoh-kfmmzcfbo-ufdiopmphz-987[bfhmo]
|
||||||
|
guahyncw-jfumncw-alumm-xyjfisgyhn-500[htamn]
|
||||||
|
ytu-xjhwjy-jll-ijxnls-879[duthg]
|
||||||
|
lgh-kwujwl-usfvq-ugslafy-esfsywewfl-944[ilszy]
|
||||||
|
tvsnigxmpi-tpewxmg-kveww-xiglrspskc-152[gipsw]
|
||||||
|
joufsobujpobm-cbtlfu-dvtupnfs-tfswjdf-129[fubjo]
|
||||||
|
rwcnawjcrxwju-bljenwpna-qdwc-mnyuxhvnwc-225[wncja]
|
||||||
|
qzchnzbshud-okzrshb-fqzrr-rzkdr-989[rzhbd]
|
||||||
|
qzoggwtwsr-pogysh-rsjszcdasbh-896[sghor]
|
||||||
|
gzefmnxq-dmnnuf-xmnadmfadk-326[tvuiw]
|
||||||
|
qzoggwtwsr-pibbm-zopcfohcfm-792[jsmfu]
|
||||||
|
mvydjvxodqz-xviyt-xjvodib-hvivbzhzio-369[iceny]
|
||||||
|
wkqxodsm-lkcuod-cdybkqo-224[dkocq]
|
||||||
|
veqtekmrk-ikk-wxsveki-542[keivm]
|
||||||
|
zlkprjbo-doxab-yxphbq-pqloxdb-419[ckdtm]
|
||||||
|
buzahisl-ibuuf-klzpnu-721[stjnm]
|
||||||
|
hwdtljsnh-kqtbjw-ijajqturjsy-515[plnqy]
|
||||||
|
luxciuwncpy-jfumncw-alumm-lyuwkocmcncih-474[lqpco]
|
||||||
|
tinnm-ibghopzs-rms-aobousasbh-506[sboah]
|
||||||
|
pbeebfvir-rtt-ratvarrevat-403[tdokj]
|
||||||
|
dmybmsuzs-pkq-efadmsq-300[msdqa]
|
||||||
|
ujqgywfau-tmffq-dgyaklauk-970[yxmid]
|
||||||
|
ovbunmneqbhf-enoovg-hfre-grfgvat-481[efgno]
|
||||||
|
hqfxxnknji-kzeed-uqfxynh-lwfxx-wjhjnansl-957[nxfhj]
|
||||||
|
plolwdub-judgh-edvnhw-pdqdjhphqw-985[dsxhg]
|
||||||
|
nwlddtqtpo-awldetn-rcldd-nfdezxpc-dpcgtnp-353[dnptc]
|
||||||
|
bwx-amkzmb-xzwrmkbqtm-ntwemz-amzdqkma-668[swmnl]
|
||||||
|
bqxnfdmhb-qzaahs-rdquhbdr-443[bdhqa]
|
||||||
|
egdytrixat-ide-htrgti-uadltg-steadnbtci-297[zampy]
|
||||||
|
gsrwyqiv-kvehi-gerhc-gsexmrk-erepcwmw-880[bkwts]
|
||||||
|
nsyjwsfyntsfq-gfxpjy-jslnsjjwnsl-749[lvzus]
|
||||||
|
dfcxsqhwzs-pibbm-gvwddwbu-246[dqbem]
|
||||||
|
mtzslklcozfd-ojp-fdpc-epdetyr-613[dpcef]
|
||||||
|
gbc-frperg-ohaal-erfrnepu-351[reafg]
|
||||||
|
gvaaz-cbtlfu-efqbsunfou-311[dvnmz]
|
||||||
|
ugdgjxmd-tskcwl-umklgewj-kwjnauw-892[wgjku]
|
||||||
|
iruzfrtkzmv-avccpsvre-nfibjyfg-243[jzoyc]
|
||||||
|
shoewudys-hqrryj-bqrehqjeho-296[heqrj]
|
||||||
|
hwdtljsnh-kqtbjw-htsyfnsrjsy-827[dntpc]
|
||||||
|
zilqwikbqdm-kivlg-uiviomumvb-902[imvbk]
|
||||||
|
rsvxltspi-sfnigx-wxsveki-984[sixve]
|
||||||
|
surmhfwloh-gbh-xvhu-whvwlqj-387[hwluv]
|
||||||
|
ubhatstkwhnl-yehpxk-wxlbzg-137[raqjb]
|
||||||
|
oknkvcta-itcfg-uecxgpigt-jwpv-ocpcigogpv-596[cgpio]
|
||||||
|
amjmpdsj-djmucp-nspafyqgle-470[ztpqn]
|
||||||
|
zixppfcfba-avb-abpfdk-471[abfpc]
|
||||||
|
owshgfarwv-jsttal-vwkayf-944[smcyx]
|
||||||
|
vjpwncrl-ljwmh-lxjcrwp-lxwcjrwvnwc-589[irbxq]
|
||||||
|
qvbmzvibqwvit-ziuxioqvo-lgm-amzdqkma-928[hgfln]
|
||||||
|
lxuxaodu-kjbtnc-jwjuhbrb-147[bjuxa]
|
||||||
|
etaqigpke-fag-yqtmujqr-440[qaegt]
|
||||||
|
zekvierkzferc-irdgrxzex-jtrmvexvi-ylek-rthlzjzkzfe-633[gkyzp]
|
||||||
|
mfklstdw-hdsklau-yjskk-kwjnauwk-762[vnfzg]
|
||||||
|
pkl-oaynap-fahhuxawj-oanreyao-706[mdfpn]
|
||||||
|
hwdtljsnh-hmthtqfyj-rfsfljrjsy-359[sxziu]
|
||||||
|
fab-eqodqf-ngzzk-bgdotmeuzs-144[kxags]
|
||||||
|
tagzsrsjvgmk-tskcwl-vwhsjlewfl-424[ejuah]
|
||||||
|
kzgwomvqk-jiasmb-uizsmbqvo-590[mbiko]
|
||||||
|
qjopwxha-xqjju-oanreyao-758[ubmon]
|
||||||
|
hvbizodx-xmtjbzidx-nxvqzibzm-cpio-yzkgjthzio-889[rmyqo]
|
||||||
|
iuruxlar-kmm-jkvruesktz-644[kruma]
|
||||||
|
ujqgywfau-jsttal-vwhdgqewfl-710[hbdlx]
|
||||||
|
jlidywncfy-wuhxs-wiuncha-yhachyylcha-630[hycaw]
|
||||||
|
lugjuacha-wlsiayhcw-dyffsvyuh-uhufsmcm-890[juefh]
|
||||||
|
hjgbwuladw-xdgowj-hmjuzskafy-398[wqigl]
|
||||||
|
yuxufmdk-sdmpq-pkq-etubbuzs-456[wldkg]
|
||||||
|
vcibutulxiom-dyffsvyuh-qilembij-110[jdnmz]
|
||||||
|
nzwzcqfw-clmmte-dpcgtnpd-509[cdmnp]
|
||||||
|
aczupnetwp-nlyoj-nzletyr-zapcletzyd-665[zelnp]
|
||||||
|
htsxzrjw-lwfij-wfintfhynaj-kqtbjw-knsfshnsl-983[kytzm]
|
||||||
|
enqvbnpgvir-onfxrg-qrirybczrag-611[rgnbi]
|
||||||
|
molgbzqfib-ciltbo-xkxivpfp-159[biflo]
|
||||||
|
plolwdub-judgh-fkrfrodwh-ghyhorsphqw-517[hdorw]
|
||||||
|
gzefmnxq-omzpk-oazfmuzyqzf-872[zkycu]
|
||||||
|
qjopwxha-lhwopey-cnwoo-naoawnyd-186[cvyno]
|
||||||
|
jyfvnlupj-ipvohghykvbz-jovjvshal-ylzlhyjo-435[xlenk]
|
||||||
|
ajmrxjlcren-kjbtnc-jwjuhbrb-329[klcuz]
|
||||||
|
wdjcvuvmyjpn-ezggtwzvi-jkzmvodjin-603[gmveh]
|
||||||
|
muqfedyput-fbqijys-whqii-bqrehqjeho-192[vdlge]
|
||||||
|
ktfitzbgz-xzz-ftgtzxfxgm-605[izfql]
|
||||||
|
bknsykmdsfo-oqq-wkbuodsxq-458[stifb]
|
||||||
|
slqryzjc-hcjjwzcyl-yaosgqgrgml-314[qymir]
|
||||||
|
gpewwmjmih-veffmx-xvemrmrk-126[itcvu]
|
||||||
|
rdadguja-gpqqxi-ldgzhwde-297[hnvso]
|
||||||
|
lxaaxbren-mhn-cnlqwxuxph-251[xvjuz]
|
||||||
|
xst-wigvix-fewoix-gsrxemrqirx-698[xireg]
|
||||||
|
iehepwnu-cnwza-zua-wymqeoepekj-108[sdnmj]
|
||||||
|
oknkvcta-itcfg-rncuvke-itcuu-hkpcpekpi-908[pgfbe]
|
||||||
|
enqvbnpgvir-ohaal-hfre-grfgvat-351[hsgdf]
|
||||||
|
ixccb-iorzhu-hqjlqhhulqj-647[hqcij]
|
||||||
|
apuut-agjrzm-jkzmvodjin-915[jamuz]
|
||||||
|
hqcfqwydw-rqiauj-ijehqwu-530[qwhij]
|
||||||
|
vhehkyne-ktwbhtvmbox-lvtoxgzxk-angm-kxvxbobgz-683[tsurp]
|
||||||
|
gntmfefwitzx-idj-knsfshnsl-723[fnsit]
|
||||||
|
ajvyjprwp-bljenwpna-qdwc-ujkxajcxah-563[yskxv]
|
||||||
|
joufsobujpobm-dboez-dpbujoh-mbcpsbupsz-259[bopuj]
|
||||||
|
xlrypetn-prr-nzyeltyxpye-847[yeprl]
|
||||||
|
zuv-ykixkz-xgsvgmotm-lruckx-jkvgxzsktz-696[ijlfz]
|
||||||
|
jqwpihizlwca-moo-lmxtwgumvb-798[nkzsr]
|
||||||
|
jsvagsulanw-kusnwfywj-zmfl-klgjsyw-736[ectrq]
|
||||||
|
ykhknbqh-nwxxep-nawymqeoepekj-758[cfvdy]
|
||||||
|
kzeed-gfxpjy-tujwfyntsx-385[aunmy]
|
||||||
|
slqryzjc-qaytclecp-fslr-dglylagle-184[lcyae]
|
||||||
|
laffe-vrgyzoi-mxgyy-iutzgotsktz-410[gtyzf]
|
||||||
|
gpbepvxcv-hrpktcvtg-wjci-stktadebtci-141[zoqhx]
|
||||||
|
yaxsnlcrun-lqxlxujcn-mnyuxhvnwc-641[nxclu]
|
||||||
|
tagzsrsjvgmk-kusnwfywj-zmfl-dstgjslgjq-294[gayon]
|
||||||
|
kwzzwaqdm-zijjqb-xczkpiaqvo-902[mkgjt]
|
||||||
|
mfklstdw-usfvq-ugslafy-xafsfuafy-684[fsaul]
|
||||||
|
zvyvgnel-tenqr-ovbunmneqbhf-sybjre-fgbentr-117[shfce]
|
||||||
|
emixwvqhml-akidmvomz-pcvb-amzdqkma-720[relbk]
|
||||||
|
rdggdhxkt-eaphixr-vgphh-hwxeexcv-973[xozyv]
|
||||||
|
bqvvu-zua-iwngapejc-992[nmdax]
|
||||||
|
bjfutsneji-kqtbjw-wjxjfwhm-203[irjmx]
|
||||||
|
bdavqofuxq-nmewqf-abqdmfuaze-976[vgzhc]
|
||||||
|
vdzonmhydc-okzrshb-fqzrr-rzkdr-313[rzdhk]
|
||||||
|
sawlkjevaz-oywrajcan-dqjp-wjwhuoeo-836[ajwoe]
|
||||||
|
fruurvlyh-gbh-sxufkdvlqj-413[kftmo]
|
||||||
|
fruurvlyh-sodvwlf-judvv-ghsorbphqw-569[tadzk]
|
||||||
|
sbejpbdujwf-tdbwfohfs-ivou-dpoubjonfou-103[rbqio]
|
||||||
|
oxmeeuruqp-otaoaxmfq-xasuefuoe-222[ozipy]
|
||||||
|
rdggdhxkt-qphzti-ejgrwphxcv-921[tusrb]
|
||||||
|
dkqjcbctfqwu-fag-yqtmujqr-882[kzvuf]
|
||||||
|
gzefmnxq-dmnnuf-mzmxkeue-248[menfu]
|
||||||
|
kgjgrypw-epybc-aylbw-kylyeckclr-314[mlvhs]
|
||||||
|
bwx-amkzmb-akidmvomz-pcvb-abwziom-148[nmtyw]
|
||||||
|
ckgvutofkj-sorozgxe-mxgjk-xghhoz-xkykgxin-670[gkxoh]
|
||||||
|
zhdsrqlchg-fkrfrodwh-ghsorbphqw-803[cjybd]
|
||||||
|
hvbizodx-wvnfzo-adivixdib-603[xwstz]
|
||||||
|
tvsnigxmpi-gerhc-hitpscqirx-204[icghp]
|
||||||
|
jrncbavmrq-cynfgvp-tenff-npdhvfvgvba-741[ybszn]
|
||||||
|
mbiyqoxsm-pvygob-psxkxmsxq-952[mjfnc]
|
||||||
|
gsrwyqiv-kvehi-veffmx-gywxsqiv-wivzmgi-282[bdrgj]
|
||||||
|
clxalrtyr-xtwtelcj-rclop-awldetn-rcldd-cpdplcns-847[lcdrt]
|
||||||
|
ahngzyzqcntr-bzmcx-sdbgmnknfx-287[fmyqt]
|
||||||
|
zgmfyxypbmsq-aylbw-amyrgle-bctcjmnkclr-340[mybcl]
|
||||||
|
fydelmwp-prr-nzyeltyxpye-717[gfjxa]
|
||||||
|
rnqnyfwd-lwfij-rflsjynh-wfggny-xfqjx-931[fnjwy]
|
||||||
|
zilqwikbqdm-xtiabqk-oziaa-twoqabqka-278[ftonr]
|
||||||
|
bjfutsneji-gzssd-uzwhmfxnsl-827[sfjnu]
|
||||||
|
ojk-nzxmzo-pinovwgz-agjrzm-jkzmvodjin-733[zjomn]
|
||||||
|
ygcrqpkbgf-dcumgv-fgukip-570[vmhxn]
|
||||||
|
dzczkrip-xiruv-srjbvk-jyzggzex-945[uzneh]
|
||||||
|
bkzrrhehdc-bzmcx-lzmzfdldms-287[eclvd]
|
||||||
|
ziuxioqvo-kpwkwtibm-lmxizbumvb-564[txsru]
|
||||||
|
kzgwomvqk-lgm-lmxizbumvb-122[mbgkl]
|
||||||
|
htsxzrjw-lwfij-idj-xjwanhjx-463[obdze]
|
||||||
|
gntmfefwitzx-kqtbjw-wjxjfwhm-749[qzutv]
|
||||||
|
htsxzrjw-lwfij-jll-tujwfyntsx-671[xugan]
|
||||||
|
ymszqfuo-rxaiqd-etubbuzs-118[ubqsz]
|
||||||
|
vdzonmhydc-azrjds-lzqjdshmf-989[dzhjm]
|
||||||
|
dyz-combod-bkllsd-oxqsxoobsxq-354[nrmkx]
|
||||||
|
pyknyegle-afmamjyrc-yaosgqgrgml-626[zdlfg]
|
||||||
|
oxmeeuruqp-vqxxknqmz-oazfmuzyqzf-352[rnsyt]
|
||||||
|
qjopwxha-xqjju-pnwejejc-654[jepqw]
|
||||||
|
wifilzof-jfumncw-alumm-xypyfijgyhn-604[fjerw]
|
||||||
|
vagreangvbany-enoovg-fuvccvat-533[gncot]
|
||||||
|
avw-zljyla-zjhclunly-obua-thuhnltlua-669[wathd]
|
||||||
|
ynssr-lvtoxgzxk-angm-mxvaghehzr-345[vopnm]
|
||||||
|
cvabijtm-uqtqbizg-ozilm-xtiabqk-oziaa-lmdmtwxumvb-928[imabt]
|
||||||
|
frqvxphu-judgh-sodvwlf-judvv-pdqdjhphqw-751[azovy]
|
||||||
|
qmpmxevc-kvehi-jyddc-fyrrc-qerekiqirx-282[ygmhv]
|
||||||
|
fodvvlilhg-udeelw-pdunhwlqj-153[sndmo]
|
||||||
|
gpsxdprixkt-ytaanqtpc-gthtpgrw-765[tpgar]
|
||||||
|
cvabijtm-kpwkwtibm-bmkpvwtwog-174[wbkmt]
|
||||||
|
vetllbybxw-yehpxk-wxlbzg-891[yekxl]
|
||||||
|
nzwzcqfw-nlyoj-dezclrp-275[zclnw]
|
||||||
|
qmpmxevc-kvehi-glsgspexi-gsrxemrqirx-828[exgim]
|
||||||
|
xtwtelcj-rclop-dnlgpyrpc-sfye-hzcvdsza-873[xmpon]
|
||||||
|
jrncbavmrq-pnaql-jbexfubc-793[bacjn]
|
||||||
|
ohmnuvfy-yaa-lymyulwb-266[yalmu]
|
||||||
|
nzwzcqfw-aczupnetwp-awldetn-rcldd-pyrtyppctyr-613[pctwd]
|
||||||
|
vqr-ugetgv-uecxgpigt-jwpv-rwtejcukpi-752[geptu]
|
||||||
|
tfcfiwlc-lejkrscv-upv-rthlzjzkzfe-607[tcfns]
|
||||||
|
hwdtljsnh-uqfxynh-lwfxx-knsfshnsl-229[xtngb]
|
||||||
|
iuruxlar-igtje-iayzuskx-ykxboik-930[kmghr]
|
||||||
|
xjgjmapg-ezggtwzvi-hvivbzhzio-421[gzivh]
|
||||||
|
gpbepvxcv-hrpktcvtg-wjci-hwxeexcv-349[xswrp]
|
||||||
|
tcorcikpi-eqttqukxg-gii-hkpcpekpi-622[ruxyk]
|
||||||
|
ygcrqpkbgf-ejqeqncvg-ucngu-440[gcqen]
|
||||||
|
etyyx-dff-qdbdhuhmf-729[wskto]
|
||||||
|
tfiifjzmv-upv-vexzevvizex-399[veizf]
|
||||||
|
houngfgxjuay-sorozgxe-mxgjk-jek-aykx-zkyzotm-566[aimhd]
|
||||||
|
hcd-gsqfsh-dzoghwq-ufogg-aobousasbh-714[ynfie]
|
||||||
|
foadouwbu-qobrm-qcohwbu-zopcfohcfm-792[obcfu]
|
||||||
|
ynukcajey-oywrajcan-dqjp-wjwhuoeo-680[jaowy]
|
||||||
|
rflsjynh-jll-rfsfljrjsy-489[jlfrs]
|
||||||
|
vkrhzxgbv-pxtihgbsxw-yehpxk-mktbgbgz-917[igtvy]
|
||||||
|
hjgbwuladw-tskcwl-dgyaklauk-294[aklwd]
|
||||||
|
cvabijtm-jcvvg-zmikycqaqbqwv-772[vcqab]
|
||||||
|
odiih-yujbcrl-pajbb-vjwjpnvnwc-849[jbcin]
|
||||||
|
tinnm-tzcksf-igsf-hsghwbu-220[bnamt]
|
||||||
|
pbeebfvir-wryylorna-jbexfubc-637[egouk]
|
||||||
|
xmtjbzidx-xviyt-yzqzgjkhzio-265[vxsry]
|
||||||
|
avw-zljyla-zjhclunly-obua-klwhyatlua-201[sjayl]
|
||||||
|
dfcxsqhwzs-qvcqczohs-fsgsofqv-246[dosrp]
|
||||||
|
rzvkjiduzy-xviyt-xjvodib-kpmxcvndib-291[cwzla]
|
||||||
|
gcfcnuls-aluxy-mwupyhayl-bohn-wihnuchgyhn-968[hnuyc]
|
||||||
|
dyz-combod-lsyrkjkbnyec-bkllsd-domrxyvyqi-328[vtxzd]
|
||||||
|
fruurvlyh-mhoobehdq-dftxlvlwlrq-907[jlves]
|
||||||
|
mrxivrexmsrep-gerhc-gsexmrk-tyvglewmrk-152[wzuly]
|
||||||
|
votubcmf-gmpxfs-pqfsbujpot-883[fpbmo]
|
||||||
|
bljenwpna-qdwc-anbnjalq-329[lcwmy]
|
||||||
|
xekdwvwnzkqo-ydkykhwpa-wjwhuoeo-550[toavy]
|
||||||
|
yhkpvhjapcl-yhiipa-jbzavtly-zlycpjl-201[lpyah]
|
||||||
|
xjinphzm-bmvyz-wvnfzo-nzmqdxzn-681[ykfxe]
|
||||||
|
pbeebfvir-rtt-ybtvfgvpf-507[bftve]
|
||||||
|
gvcskirmg-ikk-hizipstqirx-750[iyquj]
|
||||||
|
yhwooebeaz-lhwopey-cnwoo-oanreyao-108[tmuag]
|
||||||
|
wlqqp-jtrmvexvi-ylek-nfibjyfg-581[tnrhf]
|
||||||
|
tfiifjzmv-avccpsvre-jyzggzex-477[mvnjr]
|
||||||
|
xjmmjndqz-zbb-yzndbi-811[bzdjm]
|
||||||
|
qjopwxha-xwogap-nayaerejc-160[isjqz]
|
||||||
|
qzlozfhmf-azrjds-knfhrshbr-573[dfmys]
|
||||||
|
vhglnfxk-zktwx-vetllbybxw-vtgwr-vhtmbgz-ybgtgvbgz-761[gbtvl]
|
||||||
|
etaqigpke-ecpfa-eqcvkpi-cpcnauku-336[eyxtb]
|
||||||
|
lqwhuqdwlrqdo-fdqgb-frdwlqj-zrunvkrs-933[tvijl]
|
||||||
|
gvcskirmg-tvsnigxmpi-gerhc-gsexmrk-wlmttmrk-828[szawg]
|
||||||
|
irdgrxzex-kfg-jvtivk-wcfnvi-jyzggzex-269[givxz]
|
||||||
|
cqwdujys-sqdto-iqbui-270[siyeh]
|
||||||
|
bnqqnrhud-bgnbnkzsd-trdq-sdrshmf-807[dnbqr]
|
||||||
|
rgndvtcxr-hrpktcvtg-wjci-prfjxhxixdc-193[yjsht]
|
||||||
|
qekrixmg-hci-xvemrmrk-282[mreik]
|
||||||
|
xcitgcpixdcpa-snt-apqdgpidgn-349[mfywv]
|
||||||
|
wkqxodsm-pvygob-wkbuodsxq-978[ysamp]
|
||||||
|
aoubshwq-qvcqczohs-kcfygvcd-558[ytvls]
|
||||||
|
tyepcyletzylw-qwzhpc-opalcexpye-301[gamdn]
|
||||||
|
tfcfiwlc-treup-uvjzxe-607[nrthm]
|
||||||
|
ubhatstkwhnl-lvtoxgzxk-angm-inkvatlbgz-865[tagkl]
|
||||||
|
wihmogyl-aluxy-yaa-qilembij-890[emvct]
|
||||||
|
bxaxipgn-vgpst-ltpedcxots-gpqqxi-hidgpvt-245[pgtxi]
|
||||||
|
jfifqxov-doxab-mixpqfz-doxpp-obpbxoze-107[ghpyi]
|
||||||
|
gvaaz-dpssptjwf-sbccju-fohjoffsjoh-675[pfzwa]
|
||||||
|
gzefmnxq-eomhqzsqd-tgzf-efadmsq-378[qefmz]
|
||||||
|
emixwvqhml-kivlg-zmkmqdqvo-876[dcfin]
|
||||||
|
fodvvlilhg-fdqgb-frqwdlqphqw-725[qdflg]
|
||||||
|
laffe-pkrrehkgt-rumoyzoiy-670[dyjut]
|
||||||
|
egdytrixat-qphzti-tcvxcttgxcv-245[tcxgi]
|
||||||
|
htqtwkzq-wfintfhynaj-xhfajsljw-mzsy-jslnsjjwnsl-645[eynzi]
|
||||||
|
vrurcjah-pajmn-npp-mnyuxhvnwc-563[npach]
|
||||||
|
ejpanjwpekjwh-acc-klanwpekjo-576[jaekp]
|
||||||
|
kwvacumz-ozilm-kpwkwtibm-uizsmbqvo-876[mikwz]
|
||||||
|
hjgbwuladw-xdgowj-esfsywewfl-866[byzdm]
|
||||||
|
pbybeshy-wryylorna-npdhvfvgvba-351[stmxy]
|
||||||
|
qjopwxha-ywjzu-hkceopeyo-654[tysoa]
|
||||||
|
lhkhszqx-fqzcd-dff-vnqjrgno-417[fqdhn]
|
||||||
|
rgllk-otaoaxmfq-fdmuzuzs-768[vkqac]
|
||||||
|
ohmnuvfy-xsy-omyl-nymncha-214[hmtfs]
|
||||||
|
enzcntvat-cynfgvp-tenff-nanylfvf-455[cuimh]
|
||||||
|
sedikcuh-whqtu-sehheiylu-tou-bqrehqjeho-868[ydaux]
|
||||||
|
tyepcyletzylw-ojp-opalcexpye-145[wciks]
|
||||||
|
udpsdjlqj-hjj-frqwdlqphqw-309[gbpcz]
|
||||||
|
eqpuwogt-itcfg-lgnnadgcp-vtckpkpi-388[gpcti]
|
||||||
|
rkpqxyib-pzxsbkdbo-erkq-zrpqljbo-pbosfzb-133[bpkoq]
|
||||||
|
kdijqrbu-sxesebqju-tufqhjcudj-114[tdbva]
|
||||||
|
gsvvswmzi-wgezirkiv-lyrx-irkmriivmrk-412[twsrk]
|
||||||
|
ucynmlgxcb-qaytclecp-fslr-amlryglkclr-704[lcrya]
|
||||||
|
xst-wigvix-veffmx-wxsveki-100[ocvmr]
|
||||||
|
surmhfwloh-vfdyhqjhu-kxqw-frqwdlqphqw-829[hqwfd]
|
||||||
|
xmrrq-usfvq-esfsywewfl-528[alidm]
|
||||||
|
zhdsrqlchg-lqwhuqdwlrqdo-sodvwlf-judvv-ghsorbphqw-777[rtnmj]
|
||||||
|
egdytrixat-xcitgcpixdcpa-rwdrdapit-uxcpcrxcv-245[cdabn]
|
||||||
|
yrwxefpi-ikk-gywxsqiv-wivzmgi-152[iwgkv]
|
||||||
|
qcffcgwjs-foppwh-obozmgwg-558[zotsu]
|
||||||
|
veqtekmrk-gerhc-gsexmrk-hitpscqirx-568[nczdq]
|
||||||
|
gzefmnxq-pkq-pqbmdfyqzf-794[jxrmh]
|
||||||
|
eadalsjq-yjsvw-usfvq-ugslafy-ugflsafewfl-632[fsalu]
|
||||||
|
esyfwlau-usfvq-ugslafy-vwhdgqewfl-684[flsuw]
|
||||||
|
ktfitzbgz-fbebmtkr-zktwx-utldxm-wxlbzg-683[afwhg]
|
||||||
|
wihmogyl-aluxy-vohhs-uwkocmcncih-292[wzryd]
|
||||||
|
bkzrrhehdc-idkkxadzm-lzmzfdldms-677[oxwvn]
|
||||||
|
clxalrtyr-qwzhpc-lnbftdtetzy-249[zryvn]
|
||||||
|
rgllk-fab-eqodqf-vqxxknqmz-pqbxakyqzf-222[qfkxa]
|
||||||
|
xjinphzm-bmvyz-xviyt-mzxzdqdib-603[xnhfs]
|
||||||
|
htsxzrjw-lwfij-hmthtqfyj-wjfhvznxnynts-385[zreuy]
|
||||||
|
myvybpev-gokzyxsjon-oqq-nozvyiwoxd-692[iyzuj]
|
||||||
|
hcd-gsqfsh-pogysh-gvwddwbu-480[mysuk]
|
||||||
|
hcd-gsqfsh-foppwh-rsgwub-428[kvtfs]
|
||||||
|
frqvxphu-judgh-exqqb-uhvhdufk-621[wtgmn]
|
||||||
|
vhglnfxk-zktwx-vahvhetmx-vhgmtbgfxgm-345[hnamj]
|
||||||
|
tagzsrsjvgmk-usfvq-ugslafy-ugflsafewfl-892[yckbv]
|
||||||
|
joufsobujpobm-gmpxfs-vtfs-uftujoh-233[foujs]
|
||||||
|
zsxyfgqj-ojqqdgjfs-zxjw-yjxynsl-593[jqsxy]
|
||||||
|
bnknqetk-atmmx-qdzbpthrhshnm-131[ecnmt]
|
||||||
|
hmsdqmzshnmzk-dff-sqzhmhmf-859[dnxcz]
|
||||||
|
hqtyeqsjylu-tou-udwyduuhydw-348[uydhq]
|
||||||
|
ktiaaqnqml-kpwkwtibm-zmikycqaqbqwv-772[tlrsg]
|
||||||
|
nzydfxpc-rclop-mtzslklcozfd-mfyyj-nfdezxpc-dpcgtnp-951[cpdfz]
|
||||||
|
ckgvutofkj-hatte-gtgreyoy-644[tgeko]
|
||||||
|
iwcjapey-zua-paydjkhkcu-628[hntmg]
|
||||||
|
bnknqetk-okzrshb-fqzrr-trdq-sdrshmf-729[tuzoy]
|
||||||
|
qmpmxevc-kvehi-yrwxefpi-glsgspexi-wlmttmrk-828[hsyvf]
|
||||||
|
amjmpdsj-njyqrga-epyqq-qcptgacq-106[bhysd]
|
||||||
|
dwbcjkun-ljwmh-mnyuxhvnwc-641[wuyrz]
|
||||||
|
gspsvjyp-jpsaiv-hiwmkr-854[zthel]
|
||||||
|
gsrwyqiv-kvehi-gerhc-stivexmsrw-750[whgse]
|
||||||
|
xjgjmapg-wpiit-ozxcijgjbt-889[ytsop]
|
||||||
|
xgjougizobk-kmm-rghuxgzuxe-280[cwrty]
|
||||||
|
zovldbkfz-oxjmxdfkd-oxyyfq-ixyloxqlov-653[snkwb]
|
||||||
|
qczcftiz-qvcqczohs-gsfjwqsg-142[cqszf]
|
||||||
|
krxqjijamxdb-mhn-ldbcxvna-bnaerln-771[ravbt]
|
||||||
|
pybgmyargtc-bwc-bcqgel-860[bcgya]
|
||||||
|
wyvqljapsl-jovjvshal-shivyhavyf-773[vahjl]
|
||||||
|
pbafhzre-tenqr-onfxrg-bcrengvbaf-221[zyaro]
|
||||||
|
glrcplyrgmlyj-bwc-pcqcypaf-132[clpyg]
|
||||||
|
dpmpsgvm-dboez-dpbujoh-tfswjdft-545[bdmzf]
|
||||||
|
dkqjcbctfqwu-rncuvke-itcuu-cpcnauku-700[cuknq]
|
||||||
|
ajmrxjlcren-yujbcrl-pajbb-anbnjalq-459[yslvg]
|
||||||
|
oazegyqd-sdmpq-bxmefuo-sdmee-fqotzaxask-586[vfmnu]
|
||||||
|
ugdgjxmd-jsttal-ksdwk-632[hfjix]
|
||||||
|
aietsrmdih-gvcskirmg-tpewxmg-kveww-vigimzmrk-412[kfcim]
|
||||||
|
drxevkzt-jtrmvexvi-ylek-uvgcfpdvek-685[vekdr]
|
||||||
|
excdklvo-bkllsd-nozvyiwoxd-250[dlokv]
|
||||||
|
uwtojhynqj-hfsid-wjxjfwhm-281[fqsmx]
|
||||||
|
plolwdub-judgh-udeelw-uhfhlylqj-205[ludhe]
|
||||||
|
oqnidbshkd-dff-zmzkxrhr-729[cvlkx]
|
||||||
|
bknsykmdsfo-tovvilokx-bomosfsxq-328[boqly]
|
||||||
|
dpotvnfs-hsbef-qspkfdujmf-cvooz-tijqqjoh-961[zmnyi]
|
||||||
|
gspsvjyp-fyrrc-gsrxemrqirx-490[rsgpx]
|
||||||
|
gifavtkzcv-szfyrqriuflj-wcfnvi-uvmvcfgdvek-139[zadfj]
|
||||||
|
gsrwyqiv-kvehi-wgezirkiv-lyrx-wxsveki-490[alpzb]
|
||||||
|
ykhknbqh-ydkykhwpa-zalhkuiajp-862[khayp]
|
||||||
|
dmybmsuzs-yuxufmdk-sdmpq-bxmefuo-sdmee-fqotzaxask-586[nwikx]
|
||||||
|
nwzekwypera-bhksan-nayaerejc-940[xnmta]
|
||||||
|
wrs-vhfuhw-hjj-zrunvkrs-283[hrjsu]
|
||||||
|
ajyqqgdgcb-pyzzgr-amlryglkclr-782[lozts]
|
||||||
|
ohmnuvfy-jfumncw-alumm-womnigyl-mylpcwy-110[mqrgd]
|
||||||
|
foadouwbu-suu-obozmgwg-792[hgkuj]
|
||||||
|
wdjcvuvmyjpn-ytz-yzkgjthzio-109[jyztv]
|
||||||
|
ucynmlgxcb-pyzzgr-qfgnngle-210[iftry]
|
||||||
|
ymszqfuo-omzpk-oamfuzs-pqhqxabyqzf-872[qzfmo]
|
||||||
|
clotzlnetgp-ojp-opawzjxpye-769[pnhtz]
|
||||||
|
mhi-lxvkxm-yehpxk-ftgtzxfxgm-657[etajx]
|
||||||
|
surmhfwloh-fkrfrodwh-uhfhlylqj-699[rkslj]
|
||||||
|
iruzfrtkzmv-tyftfcrkv-kirzezex-841[emztq]
|
||||||
|
bdavqofuxq-nmewqf-ogefayqd-eqdhuoq-352[jpmyv]
|
||||||
|
bdavqofuxq-otaoaxmfq-xasuefuoe-326[aofqu]
|
||||||
|
gpsxdprixkt-tvv-ldgzhwde-219[dgptv]
|
||||||
|
pbeebfvir-rtt-bcrengvbaf-897[enlaq]
|
||||||
|
jchipqat-gpqqxi-bpgztixcv-375[cnqyt]
|
||||||
|
glrcplyrgmlyj-qaytclecp-fslr-pcqcypaf-574[clpyr]
|
||||||
|
pejji-oqq-vyqscdsmc-640[qcjsd]
|
||||||
|
houngfgxjuay-yigbktmkx-natz-xkykgxin-774[mszcw]
|
||||||
|
ltpedcxots-jchipqat-gpqqxi-bpcpvtbtci-219[isgfv]
|
||||||
|
gifavtkzcv-tyftfcrkv-drerxvdvek-659[vbdyz]
|
||||||
|
vjpwncrl-mhn-orwjwlrwp-641[wrjln]
|
||||||
|
vjpwncrl-ouxfna-bcxajpn-511[ydzfw]
|
||||||
|
rzvkjiduzy-xviyt-xjvodib-adivixdib-187[idvxb]
|
||||||
|
tinnm-suu-twbobqwbu-272[datjf]
|
||||||
|
apuut-xviyt-vxlpdndodji-941[zrtso]
|
||||||
|
jxdkbqfz-zixppfcfba-mixpqfz-doxpp-jxohbqfkd-705[fpxbd]
|
||||||
|
zilqwikbqdm-lgm-kwvbiqvumvb-876[bqpme]
|
||||||
|
jyddc-wgezirkiv-lyrx-wxsveki-256[sjntv]
|
||||||
|
ahngzyzqcntr-qzaahs-zbpthrhshnm-963[fzvai]
|
||||||
|
ksodcbwnsr-qfmcusbwq-suu-qighcasf-gsfjwqs-350[wyezk]
|
||||||
|
atyzghrk-igtje-iugzotm-jkyomt-462[ksuli]
|
||||||
|
dwbcjkun-ajmrxjlcren-yujbcrl-pajbb-nwprwnnarwp-563[tjsqg]
|
||||||
|
aoubshwq-dzoghwq-ufogg-aofyshwbu-896[hwcmz]
|
||||||
|
apwmeclga-npmhcargjc-njyqrga-epyqq-rpyglgle-340[dgtsc]
|
||||||
|
apwmeclga-aylbw-amyrgle-dglylagle-210[iumzy]
|
||||||
|
ydjuhdqjyedqb-rkddo-sedjqydcudj-738[ycbmx]
|
||||||
|
iuxxuyobk-xgjougizobk-pkrrehkgt-sgtgmksktz-644[pzsmw]
|
||||||
|
bnmrtldq-fqzcd-bgnbnkzsd-vnqjrgno-521[nbdqg]
|
||||||
|
wfruflnsl-gzssd-wjhjnansl-177[wtmsg]
|
||||||
|
yhwooebeaz-ywjzu-klanwpekjo-680[eowaj]
|
||||||
|
pynffvsvrq-cynfgvp-tenff-ernpdhvfvgvba-663[vbduy]
|
||||||
|
zilqwikbqdm-ntwemz-uizsmbqvo-356[yhenq]
|
||||||
|
jvsvymbs-zjhclunly-obua-jvuahputlua-721[uajlv]
|
||||||
|
fhezusjybu-rqiauj-tufbeocudj-400[ecamb]
|
||||||
|
ftzgxmbv-wrx-xgzbgxxkbgz-293[xgbzf]
|
||||||
|
chnylhuncihuf-xsy-xypyfijgyhn-578[jigcy]
|
||||||
|
vhkkhlbox-pxtihgbsxw-cxeeruxtg-wxlbzg-111[hsuty]
|
||||||
|
foadouwbu-tzcksf-gozsg-246[ofgsu]
|
||||||
|
xzwrmkbqtm-moo-nqvivkqvo-434[moqvk]
|
||||||
|
gvaaz-cvooz-dpoubjonfou-415[mcnzb]
|
||||||
|
pbafhzre-tenqr-enoovg-grpuabybtl-169[bktjl]
|
||||||
|
uwtojhynqj-gzssd-ywfnsnsl-723[phguv]
|
||||||
|
dlhwvupglk-zjhclunly-obua-klwhyatlua-227[luahk]
|
||||||
|
vhkkhlbox-vhehkyne-vahvhetmx-ybgtgvbgz-215[hvbeg]
|
||||||
|
qlm-pbzobq-gbiivybxk-lmboxqflkp-809[blqik]
|
||||||
|
forwcoqhwjs-qvcqczohs-ghcfous-792[mtuqn]
|
||||||
|
eqpuwogt-itcfg-dwppa-fgrnqaogpv-570[gpafo]
|
||||||
|
lxuxaodu-bljenwpna-qdwc-jwjuhbrb-121[rbqfd]
|
||||||
|
ykhknbqh-xqjju-oanreyao-680[ahjkn]
|
||||||
|
ugfkmewj-yjsvw-hdsklau-yjskk-kzahhafy-918[kahjs]
|
||||||
|
gbc-frperg-fpniratre-uhag-fnyrf-897[dskta]
|
||||||
|
myxcewob-qbkno-lexxi-wkxkqowoxd-770[spdoc]
|
||||||
|
cqwdujys-fbqijys-whqii-huiuqhsx-998[uhebs]
|
||||||
|
ckgvutofkj-igtje-iugzotm-rghuxgzuxe-774[gutei]
|
||||||
|
excdklvo-lexxi-psxkxmsxq-302[ypsmx]
|
||||||
|
mbiyqoxsm-dyz-combod-mkxni-mykdsxq-zebmrkcsxq-692[fnhpz]
|
||||||
|
zlkprjbo-doxab-gbiivybxk-xkxivpfp-809[ydtxn]
|
||||||
|
wdjcvuvmyjpn-ezggtwzvi-hvmfzodib-603[vzdgi]
|
||||||
|
njmjubsz-hsbef-fhh-bobmztjt-649[mxkjw]
|
||||||
|
wsvsdkbi-qbkno-oqq-ecob-docdsxq-796[rglok]
|
||||||
|
htsxzrjw-lwfij-gfxpjy-fsfqdxnx-307[uyteb]
|
||||||
|
wpuvcdng-ejqeqncvg-yqtmujqr-882[svamn]
|
||||||
|
tagzsrsjvgmk-hdsklau-yjskk-ugflsafewfl-606[tysrn]
|
||||||
|
kwtwznct-akidmvomz-pcvb-zmamizkp-200[skpom]
|
||||||
|
dpmpsgvm-dboez-dpbujoh-fohjoffsjoh-311[fknst]
|
||||||
|
rnqnyfwd-lwfij-hmthtqfyj-xytwflj-567[gzkol]
|
||||||
|
zntargvp-pnaql-hfre-grfgvat-923[yijbm]
|
||||||
|
dzczkrip-xiruv-treup-tfrkzex-drerxvdvek-347[vrmsu]
|
||||||
|
ajyqqgdgcb-afmamjyrc-sqcp-rcqrgle-522[cqagr]
|
||||||
|
pelbtravp-ohaal-erprvivat-715[jnbmz]
|
||||||
|
irdgrxzex-sleep-ivrthlzjzkzfe-113[bmsnw]
|
||||||
|
eqpuwogt-itcfg-tcddkv-fgxgnqrogpv-804[gtcdf]
|
||||||
|
cvabijtm-moo-ivitgaqa-226[darfu]
|
||||||
|
ytu-xjhwjy-xhfajsljw-mzsy-zxjw-yjxynsl-281[wzjeb]
|
||||||
|
fkqbokxqflkxi-yxphbq-obxznrfpfqflk-809[dcasb]
|
||||||
|
gokzyxsjon-sxdobxkdsyxkv-mkxni-ecob-docdsxq-276[zypso]
|
||||||
|
ibghopzs-suu-kcfygvcd-402[cgsub]
|
||||||
|
tfiifjzmv-srjbvk-uvjzxe-581[sovtj]
|
||||||
|
gntmfefwitzx-gfxpjy-xmnuunsl-619[fnxgm]
|
||||||
|
lgh-kwujwl-bwddqtwsf-vwhsjlewfl-788[tlejf]
|
||||||
|
hjgbwuladw-wyy-ghwjslagfk-164[wgahj]
|
||||||
|
nzwzcqfw-ojp-qtylyntyr-431[ynqtw]
|
||||||
|
sbejpbdujwf-sbccju-vtfs-uftujoh-909[kujit]
|
||||||
|
vhkkhlbox-wrx-ftkdxmbgz-241[uwzex]
|
||||||
|
lahxpnwrl-bljenwpna-qdwc-cajrwrwp-381[yjzno]
|
||||||
|
lugjuacha-jfumncw-alumm-jolwbumcha-838[uamcj]
|
||||||
|
gvcskirmg-glsgspexi-jmrergmrk-828[smeyi]
|
||||||
|
thnulapj-ihzrla-thyrlapun-955[ahlnp]
|
||||||
|
sno-rdbqds-bzmcx-btrsnldq-rdquhbd-937[dbqrs]
|
||||||
|
vdzonmhydc-eknvdq-dmfhmddqhmf-781[dmhfn]
|
||||||
|
iehepwnu-cnwza-xqjju-ykjpwejiajp-368[jepwa]
|
||||||
|
dfcxsqhwzs-dzoghwq-ufogg-cdsfohwcbg-974[gcdfh]
|
||||||
|
sbqiiyvyut-tou-jhqydydw-608[okbzs]
|
||||||
|
htsxzrjw-lwfij-gzssd-uzwhmfxnsl-801[nmtjq]
|
||||||
|
hvbizodx-rzvkjiduzy-xviyt-yzqzgjkhzio-213[zivyd]
|
||||||
|
ajmrxjlcren-ljwmh-lxjcrwp-bqryyrwp-745[kheat]
|
||||||
|
vkppo-shoewudys-tou-udwyduuhydw-556[udowy]
|
||||||
|
dpotvnfs-hsbef-dmbttjgjfe-gmpxfs-nbslfujoh-363[qapli]
|
||||||
|
glrcplyrgmlyj-djmucp-qrmpyec-158[clmpr]
|
||||||
|
emixwvqhml-xtiabqk-oziaa-wxmzibqwva-642[rkpba]
|
||||||
|
qczcftiz-dzoghwq-ufogg-aofyshwbu-298[lmcuy]
|
||||||
|
cvabijtm-zilqwikbqdm-akidmvomz-pcvb-nqvivkqvo-746[ynxzo]
|
||||||
|
pkl-oaynap-acc-wjwhuoeo-134[jxlai]
|
||||||
|
xjmmjndqz-kgvnodx-bmvnn-rjmfncjk-291[njmdk]
|
||||||
|
ejpanjwpekjwh-nwxxep-nayaerejc-550[lisvd]
|
||||||
|
htwwtxnaj-htsxzrjw-lwfij-hfsid-htfynsl-wjfhvznxnynts-541[hntwf]
|
||||||
|
mbiyqoxsm-mkxni-mykdsxq-crszzsxq-770[zhowm]
|
||||||
|
rmn-qcapcr-ucynmlgxcb-cee-pcqcypaf-886[cpaem]
|
||||||
|
rtqlgevkng-ejqeqncvg-fgxgnqrogpv-466[zktns]
|
||||||
|
fydelmwp-mfyyj-nfdezxpc-dpcgtnp-769[anfej]
|
||||||
|
yuxufmdk-sdmpq-otaoaxmfq-pqbxakyqzf-742[ohxti]
|
||||||
|
vxupkizork-igtje-xkgiwaoyozout-592[bmwjf]
|
||||||
|
veqtekmrk-tvsnigxmpi-gerhc-gsexmrk-gywxsqiv-wivzmgi-802[dglps]
|
||||||
|
nsyjwsfyntsfq-uqfxynh-lwfxx-ijuqtdrjsy-931[ymnhu]
|
||||||
|
gifavtkzcv-avccpsvre-fgvirkzfej-841[ypigz]
|
||||||
|
krxqjijamxdb-kdwwh-mnyjacvnwc-641[krnma]
|
||||||
|
dszphfojd-ezf-sftfbsdi-805[fdszb]
|
||||||
|
xmrrq-tmffq-lwuzfgdgyq-372[fqgmr]
|
||||||
|
tagzsrsjvgmk-xdgowj-vwhsjlewfl-788[gjswl]
|
||||||
|
lsyrkjkbnyec-mkxni-nofovyzwoxd-614[knoyx]
|
||||||
|
dwbcjkun-mhn-bjunb-173[mykra]
|
||||||
|
vhehkyne-vtgwr-nlxk-mxlmbgz-319[eghkl]
|
||||||
|
bkzrrhehdc-bnqqnrhud-bzmcx-bnzshmf-otqbgzrhmf-677[xaszn]
|
||||||
|
oxmeeuruqp-bxmefuo-sdmee-abqdmfuaze-248[udtec]
|
||||||
|
jlidywncfy-mwupyhayl-bohn-uhufsmcm-500[yhmuc]
|
||||||
|
xjmmjndqz-zbb-mzvxlpdndodji-239[djmzb]
|
||||||
|
yuxufmdk-sdmpq-omzpk-qzsuzqqduzs-534[ofrpg]
|
||||||
|
tfejldvi-xiruv-vxx-uvgrikdvek-659[cnesm]
|
||||||
|
yaxsnlcrun-ajkkrc-anbnjalq-979[nmivs]
|
||||||
|
tvsnigxmpi-ikk-wivzmgiw-880[agunv]
|
||||||
|
mrxivrexmsrep-tpewxmg-kveww-viwievgl-698[evwim]
|
||||||
|
nglmtuex-yehpxk-labiibgz-241[begil]
|
||||||
|
zuv-ykixkz-ixeumktoi-igtje-iugzotm-aykx-zkyzotm-670[pjybl]
|
||||||
|
forwcoqhwjs-dzoghwq-ufogg-difqvogwbu-272[xkwoz]
|
||||||
|
ajyqqgdgcb-qaytclecp-fslr-bcqgel-886[mkvsi]
|
||||||
|
myxcewob-qbkno-mkxni-mykdsxq-wkbuodsxq-770[zmijb]
|
||||||
|
uwtojhynqj-kqtbjw-yjhmstqtld-333[jtqhw]
|
||||||
|
wsvsdkbi-qbkno-lkcuod-dbksxsxq-406[biaoe]
|
||||||
|
gpbepvxcv-rpcsn-rdpixcv-advxhixrh-895[dcwgp]
|
||||||
|
muqfedyput-isqludwuh-xkdj-mehaixef-712[betdq]
|
||||||
|
ckgvutofkj-inuiurgzk-xkgiwaoyozout-956[sazyo]
|
||||||
|
wfruflnsl-uqfxynh-lwfxx-btwpxmtu-541[fxluw]
|
||||||
|
qfmcusbwq-rms-igsf-hsghwbu-246[sbfgh]
|
||||||
|
ynukcajey-nwxxep-qoan-paopejc-602[htmbv]
|
||||||
|
ujqgywfau-uzgugdslw-jwkwsjuz-138[newms]
|
||||||
|
yflexwxoalrp-zxkav-cfkxkzfkd-705[ctnsy]
|
||||||
|
vjpwncrl-lqxlxujcn-mnyuxhvnwc-953[nawmz]
|
||||||
|
willimcpy-wuhxs-lyuwkocmcncih-786[cilwh]
|
||||||
|
mtzslklcozfd-clmmte-cpnptgtyr-119[tjkgv]
|
||||||
|
xlrypetn-awldetn-rcldd-cplnbftdtetzy-795[tdlen]
|
||||||
|
vkppo-rqiauj-huqsgkyiyjyed-452[yijkp]
|
||||||
|
vxupkizork-lruckx-jkbkruvsktz-124[eumyz]
|
||||||
|
diozmivodjivg-agjrzm-nzmqdxzn-915[otpfl]
|
||||||
|
owshgfarwv-hdsklau-yjskk-klgjsyw-918[qcjim]
|
||||||
|
zuv-ykixkz-igtje-iugzotm-zkinturume-202[plvqf]
|
||||||
|
zlilocri-oxyyfq-bkdfkbbofkd-835[bswmn]
|
||||||
|
ziuxioqvo-lgm-amzdqkma-798[maioq]
|
||||||
|
xqvwdeoh-sodvwlf-judvv-ghyhorsphqw-517[hvdow]
|
||||||
|
ovbunmneqbhf-enqvbnpgvir-onfxrg-qrfvta-507[nvbfq]
|
||||||
|
gbc-frperg-pnaql-genvavat-351[pmzkq]
|
||||||
|
eadalsjq-yjsvw-jsttal-suimakalagf-580[zjghy]
|
||||||
|
rdadguja-rpcsn-rdpixcv-apqdgpidgn-245[dpagr]
|
||||||
|
tbxmlkfwba-pzxsbkdbo-erkq-abpfdk-523[vifrq]
|
||||||
|
ocipgvke-uecxgpigt-jwpv-ugtxkegu-544[abfsh]
|
||||||
|
ovbunmneqbhf-zvyvgnel-tenqr-wryylorna-ybtvfgvpf-481[hxymg]
|
||||||
|
pinovwgz-xjinphzm-bmvyz-agjrzm-ozxcijgjbt-681[cqlnu]
|
||||||
|
tinnm-qobrm-ghcfous-220[hyczt]
|
||||||
|
iuruxlar-yigbktmkx-natz-ykxboiky-748[kixya]
|
||||||
|
bkzrrhehdc-bzmcx-bnzshmf-cdrhfm-209[hbcmr]
|
||||||
|
gpsxdprixkt-tvv-uxcpcrxcv-973[xcpvr]
|
||||||
|
forwcoqhwjs-rms-hfowbwbu-974[stzrm]
|
||||||
|
zovldbkfz-fkqbokxqflkxi-mixpqfz-doxpp-cfkxkzfkd-705[tsmfo]
|
||||||
|
vetllbybxw-lvtoxgzxk-angm-ftgtzxfxgm-371[sbemy]
|
||||||
|
hwbba-ejqeqncvg-tgugctej-232[iyrqv]
|
||||||
|
vqr-ugetgv-lgnnadgcp-wugt-vguvkpi-596[gvunp]
|
||||||
|
xgvnndadzy-wpiit-yzndbi-343[rawyd]
|
||||||
|
jxdkbqfz-oxyyfq-qbzeklildv-107[qbdfk]
|
||||||
|
wlsiayhcw-luvvcn-mufym-656[jbvne]
|
||||||
|
surmhfwloh-fdqgb-ghvljq-621[ymnve]
|
||||||
|
mvkccspson-bkllsd-vklybkdybi-432[yscux]
|
||||||
|
dszphfojd-sbccju-dvtupnfs-tfswjdf-129[itbfs]
|
||||||
|
lsyrkjkbnyec-lexxi-crszzsxq-978[sxcek]
|
||||||
|
qlm-pbzobq-mixpqfz-doxpp-zlkqxfkjbkq-211[satyb]
|
||||||
|
bknsykmdsfo-nio-kmaescsdsyx-744[tspif]
|
||||||
|
bpvctixr-rpcsn-rjhidbtg-htgkxrt-713[rtbcg]
|
||||||
|
sebehvkb-rqiauj-udwyduuhydw-140[udbeh]
|
||||||
|
zhdsrqlchg-fdqgb-hqjlqhhulqj-387[zptrs]
|
||||||
|
qxdwpopgsdjh-rpcsn-sthxvc-635[nbixj]
|
||||||
|
pualyuhapvuhs-msvdly-klzpnu-721[ulpah]
|
||||||
|
sbqiiyvyut-shoewudys-isqludwuh-xkdj-jhqydydw-894[dysuh]
|
||||||
|
wsvsdkbi-qbkno-lexxi-dbksxsxq-614[onzwh]
|
||||||
|
ydjuhdqjyedqb-rqiauj-efuhqjyedi-894[ocdpe]
|
||||||
|
kwzzwaqdm-ntwemz-wxmzibqwva-434[nwzml]
|
||||||
|
qspkfdujmf-fhh-nbobhfnfou-571[zpyau]
|
||||||
|
bxaxipgn-vgpst-tvv-detgpixdch-583[xwiac]
|
||||||
|
qfmcusbwq-dfcxsqhwzs-xszzmpsob-fsqswjwbu-402[lstrx]
|
||||||
|
dpmpsgvm-dboez-sfdfjwjoh-337[dfjmo]
|
||||||
|
dzoghwq-ufogg-fsgsofqv-636[gfoqs]
|
||||||
|
nzwzcqfw-dnlgpyrpc-sfye-qtylyntyr-509[milhd]
|
||||||
|
xgsvgmotm-pkrrehkgt-vaxingyotm-176[jubcm]
|
||||||
|
xgsvgmotm-jek-cuxqynuv-644[soxwn]
|
||||||
|
cxy-bnlanc-lahxpnwrl-kdwwh-fxatbqxy-485[zamhj]
|
||||||
|
irgyyolokj-inuiurgzk-sgtgmksktz-982[vzkrq]
|
||||||
|
xgvnndadzy-xcjxjgvoz-xjiovdihzio-733[ozhyu]
|
||||||
|
gvcskirmg-nippcfier-xiglrspskc-334[bastq]
|
||||||
|
zlilocri-gbiivybxk-obxznrfpfqflk-367[ntyda]
|
||||||
|
pyknyegle-pyzzgr-pcqcypaf-886[nxvzy]
|
||||||
|
zhdsrqlchg-gbh-frqwdlqphqw-361[nqzts]
|
||||||
|
kyelcrga-cee-yaosgqgrgml-808[izdqr]
|
||||||
|
hplazytkpo-prr-cpnptgtyr-379[prtya]
|
598
y2016/resources/6_input.txt
Normal file
598
y2016/resources/6_input.txt
Normal file
@ -0,0 +1,598 @@
|
|||||||
|
uzmnhwye
|
||||||
|
jvyyfmhr
|
||||||
|
eiwokyzj
|
||||||
|
rghqvfsx
|
||||||
|
pqjbfqey
|
||||||
|
ceqkjgny
|
||||||
|
kbpuzvof
|
||||||
|
epyeucto
|
||||||
|
bqhqvbef
|
||||||
|
tqduwleg
|
||||||
|
ysadziyj
|
||||||
|
onvxrwcl
|
||||||
|
dwbhjkmx
|
||||||
|
qvgqewkr
|
||||||
|
qazepxhd
|
||||||
|
bqtuexvi
|
||||||
|
vieyforp
|
||||||
|
kizhadeh
|
||||||
|
ofpraxry
|
||||||
|
xamrsokr
|
||||||
|
jrrottpf
|
||||||
|
gweaulph
|
||||||
|
gyctgzpo
|
||||||
|
mkddcnuk
|
||||||
|
llbxmhbt
|
||||||
|
mghoubct
|
||||||
|
arhrpksk
|
||||||
|
hzeshlue
|
||||||
|
loygkukn
|
||||||
|
asakqobo
|
||||||
|
vwvjnarb
|
||||||
|
pmqcgzkj
|
||||||
|
soucxjes
|
||||||
|
szsuqdss
|
||||||
|
hyjyxtyi
|
||||||
|
qjsjwjuf
|
||||||
|
cvkuyeit
|
||||||
|
qvlmnzih
|
||||||
|
distpoga
|
||||||
|
dtlpvlub
|
||||||
|
fszspsdu
|
||||||
|
zkpxuozx
|
||||||
|
yumhqgty
|
||||||
|
wetfiqij
|
||||||
|
ozpmcegi
|
||||||
|
ylpbjbru
|
||||||
|
rqksydxz
|
||||||
|
ifayduog
|
||||||
|
xqlhyrhl
|
||||||
|
wrolqshx
|
||||||
|
cliyrafn
|
||||||
|
jtuerdyy
|
||||||
|
damyknzr
|
||||||
|
olbtisgv
|
||||||
|
sdlvkpjg
|
||||||
|
tvfvrshv
|
||||||
|
ugywkitq
|
||||||
|
idjjqpzc
|
||||||
|
eeowwemi
|
||||||
|
npplofdm
|
||||||
|
ouzjrlph
|
||||||
|
foawnibc
|
||||||
|
xcdcepzd
|
||||||
|
irqsuacz
|
||||||
|
xtnmuzqp
|
||||||
|
sgsxsjoj
|
||||||
|
qhkpbuvq
|
||||||
|
tsvwtvtz
|
||||||
|
lgqaycod
|
||||||
|
adttxkwp
|
||||||
|
kjcyqgoc
|
||||||
|
bfkxbgxq
|
||||||
|
iiszhwbf
|
||||||
|
cgnihihb
|
||||||
|
gsgvjypz
|
||||||
|
lgcgjccw
|
||||||
|
rdkltabk
|
||||||
|
wnymgwbv
|
||||||
|
jdfqdvis
|
||||||
|
yxtuyupx
|
||||||
|
nsvafgfo
|
||||||
|
ztmbgjux
|
||||||
|
axugvumx
|
||||||
|
tstqlnye
|
||||||
|
eeyqirow
|
||||||
|
ovaityku
|
||||||
|
cdqyjdkz
|
||||||
|
vuhkumlu
|
||||||
|
rwebkmlj
|
||||||
|
prncgnbt
|
||||||
|
ftuhvnow
|
||||||
|
lhmnkhmy
|
||||||
|
unyaizoz
|
||||||
|
ezshlifw
|
||||||
|
bllzrnar
|
||||||
|
uxblibez
|
||||||
|
fpkclnns
|
||||||
|
zqocayvl
|
||||||
|
umoistgi
|
||||||
|
skmgbxls
|
||||||
|
jgtlmsux
|
||||||
|
nulmpeow
|
||||||
|
rxeyoiwy
|
||||||
|
xpqouwhq
|
||||||
|
ogepecdf
|
||||||
|
paeqseqk
|
||||||
|
auntemaj
|
||||||
|
kyorwfkl
|
||||||
|
tnvbjicg
|
||||||
|
xazuvzok
|
||||||
|
noiksasa
|
||||||
|
tvgkzpcl
|
||||||
|
jqzwlyvl
|
||||||
|
zcbzkese
|
||||||
|
notfmgol
|
||||||
|
vceqbfbg
|
||||||
|
qfeabvhv
|
||||||
|
hejfluqw
|
||||||
|
yoxvxdes
|
||||||
|
pbgiqytr
|
||||||
|
tntrwezn
|
||||||
|
duadnppa
|
||||||
|
nqnwslev
|
||||||
|
okmdpmyr
|
||||||
|
eljfthrk
|
||||||
|
fymbhtes
|
||||||
|
cdyjpcnd
|
||||||
|
qmaihzyz
|
||||||
|
cifmitdm
|
||||||
|
ksjznrxd
|
||||||
|
jdcmoqpo
|
||||||
|
caicyvmw
|
||||||
|
zhgsnmcv
|
||||||
|
idxndssh
|
||||||
|
ppykgzto
|
||||||
|
hvkjejgz
|
||||||
|
dezkqhas
|
||||||
|
ddfpqxfu
|
||||||
|
zabdhasf
|
||||||
|
qkhgknfl
|
||||||
|
gqrzmfdv
|
||||||
|
lnzrgbwm
|
||||||
|
wrytspbl
|
||||||
|
bsjzukak
|
||||||
|
kfpcoyua
|
||||||
|
zzbpiifh
|
||||||
|
ygrhxtug
|
||||||
|
zedbugkr
|
||||||
|
sienwiyq
|
||||||
|
vpophmnv
|
||||||
|
kvrgegtp
|
||||||
|
azpkkojs
|
||||||
|
jgwlwtjo
|
||||||
|
azwbmxgy
|
||||||
|
wblpgwvu
|
||||||
|
jwkustki
|
||||||
|
fmjixbct
|
||||||
|
ghkclypp
|
||||||
|
erczaojx
|
||||||
|
iqmhmlkf
|
||||||
|
yfqnajza
|
||||||
|
vhpadprc
|
||||||
|
hjicylfh
|
||||||
|
mwbavklg
|
||||||
|
txhtbhbm
|
||||||
|
pufqjjei
|
||||||
|
zazwoxia
|
||||||
|
yhzexooi
|
||||||
|
vuqtvkuv
|
||||||
|
mppianmz
|
||||||
|
tscbvqrg
|
||||||
|
hajzaamg
|
||||||
|
urqizitm
|
||||||
|
ircgrvlo
|
||||||
|
jgzcpbjo
|
||||||
|
erpiqxlw
|
||||||
|
xvnqbjqc
|
||||||
|
xauztetw
|
||||||
|
bcytezdp
|
||||||
|
sqwrbgjb
|
||||||
|
tinldoyz
|
||||||
|
rdkbfbew
|
||||||
|
kkpmcqid
|
||||||
|
fjiztfcy
|
||||||
|
ybdoeafy
|
||||||
|
burdrehw
|
||||||
|
uyredvvm
|
||||||
|
bwvobekv
|
||||||
|
fniozvjr
|
||||||
|
ifaoxink
|
||||||
|
zaoujdun
|
||||||
|
bykdovxw
|
||||||
|
wasdjrzy
|
||||||
|
uxokzwlb
|
||||||
|
votizlio
|
||||||
|
leoxtnlc
|
||||||
|
ymcesetp
|
||||||
|
mibahaht
|
||||||
|
ldgfbbar
|
||||||
|
aaegvpyn
|
||||||
|
etgdecrd
|
||||||
|
cbqerkil
|
||||||
|
myldihga
|
||||||
|
aycsmksz
|
||||||
|
sbdprnva
|
||||||
|
ytlllxsq
|
||||||
|
shxuxktj
|
||||||
|
otxymese
|
||||||
|
hygjpofa
|
||||||
|
lozdcvfn
|
||||||
|
ulrvezsj
|
||||||
|
elflfepx
|
||||||
|
xtyqbbaz
|
||||||
|
wombapna
|
||||||
|
uesqfrfo
|
||||||
|
amagopph
|
||||||
|
tdipmqwo
|
||||||
|
qlfhnwxp
|
||||||
|
qycwncct
|
||||||
|
haofnvsq
|
||||||
|
bwiyooof
|
||||||
|
fdftgidb
|
||||||
|
xzntthfa
|
||||||
|
ouzddcqt
|
||||||
|
fywssrae
|
||||||
|
ywmmvhut
|
||||||
|
gphtugjk
|
||||||
|
qxfymjuh
|
||||||
|
dbnxhxac
|
||||||
|
mvwunqfa
|
||||||
|
tfrrjcnr
|
||||||
|
lycvubak
|
||||||
|
pfxofasn
|
||||||
|
xiacctnn
|
||||||
|
vrlncgrn
|
||||||
|
wjkeqsav
|
||||||
|
vskxlpkf
|
||||||
|
iaknsppj
|
||||||
|
kzexhdzd
|
||||||
|
jesglqmn
|
||||||
|
lkqtzgzd
|
||||||
|
wnwksqbf
|
||||||
|
htqrcgyq
|
||||||
|
jjynwudx
|
||||||
|
lawnwevw
|
||||||
|
cfewlcwu
|
||||||
|
ledcrfvq
|
||||||
|
zlfpilwv
|
||||||
|
jckvhaly
|
||||||
|
xhggozqd
|
||||||
|
hrnuxzwq
|
||||||
|
ajominjf
|
||||||
|
bkoaxnil
|
||||||
|
zcjslwqq
|
||||||
|
vgexcqtl
|
||||||
|
ddfannml
|
||||||
|
ufbfceuh
|
||||||
|
vuibklnx
|
||||||
|
tmrtgqxx
|
||||||
|
izxwfael
|
||||||
|
njtzahxu
|
||||||
|
bzwyyycr
|
||||||
|
ggxoqbvo
|
||||||
|
oysvzvoi
|
||||||
|
ejxxjhjl
|
||||||
|
unwkfzyr
|
||||||
|
nwycafcu
|
||||||
|
lfqieudu
|
||||||
|
natvibge
|
||||||
|
qzrnpxew
|
||||||
|
mqjbtpmh
|
||||||
|
ixdsjywf
|
||||||
|
nmilafsn
|
||||||
|
tfwubeot
|
||||||
|
ccmrtlfs
|
||||||
|
uajfiusi
|
||||||
|
jhinkyxm
|
||||||
|
qwcvvimb
|
||||||
|
wlbhjanf
|
||||||
|
vdcedtkw
|
||||||
|
uiibfsbh
|
||||||
|
hkgxmybs
|
||||||
|
lsqlrxll
|
||||||
|
ihvodcrb
|
||||||
|
ewrfalkm
|
||||||
|
kelnqkcd
|
||||||
|
vroxnjwh
|
||||||
|
jeneowpg
|
||||||
|
ozivuper
|
||||||
|
fxatuncj
|
||||||
|
dchmobvr
|
||||||
|
oyxqiszo
|
||||||
|
uuyxgshp
|
||||||
|
sxcbjmhu
|
||||||
|
dorsqxgt
|
||||||
|
urygoghb
|
||||||
|
lolotlqh
|
||||||
|
ytaalnkv
|
||||||
|
bcspchnq
|
||||||
|
wbdululm
|
||||||
|
vzqwkjix
|
||||||
|
hinyyoag
|
||||||
|
qkyqkdit
|
||||||
|
lolhbfkp
|
||||||
|
zlwjxdoa
|
||||||
|
yudtkctc
|
||||||
|
xcvazkiu
|
||||||
|
ttvfuzxr
|
||||||
|
rqfrdkcm
|
||||||
|
rihwltdh
|
||||||
|
qcpjwsjz
|
||||||
|
bazpmmmx
|
||||||
|
grxiwhag
|
||||||
|
cbljykhx
|
||||||
|
weooldcv
|
||||||
|
lumfsfwj
|
||||||
|
kiunrfgy
|
||||||
|
fafbvyjx
|
||||||
|
acpzgmgh
|
||||||
|
pdyhmtvq
|
||||||
|
ssismufm
|
||||||
|
pdlzydrn
|
||||||
|
sxxbtkqi
|
||||||
|
gnuxwgui
|
||||||
|
wcuguqju
|
||||||
|
jkjkdkph
|
||||||
|
prpmfknq
|
||||||
|
csuabssx
|
||||||
|
khymlrkm
|
||||||
|
muavohgo
|
||||||
|
sqgzadar
|
||||||
|
svzwomsw
|
||||||
|
zfscsyyh
|
||||||
|
rhuwuqij
|
||||||
|
otxcyjya
|
||||||
|
ftecgqvj
|
||||||
|
nbdrbipz
|
||||||
|
sppapkeb
|
||||||
|
xxysrbxg
|
||||||
|
pkvvzfwx
|
||||||
|
mpadytha
|
||||||
|
iqbdgpwm
|
||||||
|
aqisvbnk
|
||||||
|
ipckdhwl
|
||||||
|
rkivzxzk
|
||||||
|
tkiykice
|
||||||
|
jmpfxvqq
|
||||||
|
shrwhvwl
|
||||||
|
uxlgxmgf
|
||||||
|
nhjjylml
|
||||||
|
ujvjqgao
|
||||||
|
yekgzrqv
|
||||||
|
ujbnxfya
|
||||||
|
pmtovthi
|
||||||
|
hsazctam
|
||||||
|
hhmesojw
|
||||||
|
vgxomjtg
|
||||||
|
ucudhxze
|
||||||
|
kzgkdvlj
|
||||||
|
vtjkjgrj
|
||||||
|
fticzjct
|
||||||
|
dwulyubi
|
||||||
|
fyfiwbkt
|
||||||
|
orcuggcq
|
||||||
|
kvxqcwfz
|
||||||
|
vvjeoumv
|
||||||
|
xsyobzop
|
||||||
|
iszghxbl
|
||||||
|
kxxvtiuf
|
||||||
|
klwsferz
|
||||||
|
emzmpfvt
|
||||||
|
gnsxgbib
|
||||||
|
nnrmtcdj
|
||||||
|
qqnfngkm
|
||||||
|
lkdxvyxe
|
||||||
|
vkeaswre
|
||||||
|
kfvpnnpd
|
||||||
|
mozumbpg
|
||||||
|
omwjojxc
|
||||||
|
sjmkijsk
|
||||||
|
fivvusjy
|
||||||
|
esmktnbm
|
||||||
|
mbkizlzq
|
||||||
|
mscagsvf
|
||||||
|
twpwpsbj
|
||||||
|
okwrcirc
|
||||||
|
hcexoyjh
|
||||||
|
tzhxxmkr
|
||||||
|
zfhzgnoe
|
||||||
|
soldpmdf
|
||||||
|
ejikyuba
|
||||||
|
cudjzzmg
|
||||||
|
xfwpcilo
|
||||||
|
vpjqpuyk
|
||||||
|
oprtpooj
|
||||||
|
djzadomw
|
||||||
|
shuqtulp
|
||||||
|
rlspstxi
|
||||||
|
gxbfmsqv
|
||||||
|
qoojsatd
|
||||||
|
rvupwphy
|
||||||
|
zfgqbrwb
|
||||||
|
ninnufxt
|
||||||
|
annvdtct
|
||||||
|
phwyfyjt
|
||||||
|
qxwfsujq
|
||||||
|
bwrbuwxs
|
||||||
|
ihwlqjbr
|
||||||
|
zylvjunv
|
||||||
|
bmmsjzxk
|
||||||
|
rvfidswe
|
||||||
|
fjgovnmk
|
||||||
|
mogllpfx
|
||||||
|
ddsefzqd
|
||||||
|
wrssovrq
|
||||||
|
yaqhesmy
|
||||||
|
cvvcswup
|
||||||
|
kpmipygw
|
||||||
|
xrjtbhze
|
||||||
|
nqucxgea
|
||||||
|
kpbbhdhz
|
||||||
|
fhdsgcdm
|
||||||
|
pmjidvmk
|
||||||
|
szbhczpa
|
||||||
|
tchjtqzu
|
||||||
|
qzorzcpu
|
||||||
|
mfnvijyy
|
||||||
|
wuutyddc
|
||||||
|
ysupoemc
|
||||||
|
dunwqmbn
|
||||||
|
mocewxzi
|
||||||
|
qiwracmo
|
||||||
|
rmbbhvud
|
||||||
|
cltnmdiy
|
||||||
|
ruutdaeo
|
||||||
|
wihpnryn
|
||||||
|
mgajpkys
|
||||||
|
iahfwmuw
|
||||||
|
vuocxwiu
|
||||||
|
mbygminp
|
||||||
|
kmkjaead
|
||||||
|
hxnztxbh
|
||||||
|
flnxmtbj
|
||||||
|
nkbrfcqg
|
||||||
|
blkvlojl
|
||||||
|
ppdielzk
|
||||||
|
ssclzhip
|
||||||
|
qvvymayo
|
||||||
|
cthwrgfx
|
||||||
|
rjqdlnep
|
||||||
|
hccjexgw
|
||||||
|
cbclqcga
|
||||||
|
cxjjdgvu
|
||||||
|
puthjawq
|
||||||
|
gvvzvjac
|
||||||
|
wtxxtwef
|
||||||
|
retdqdpn
|
||||||
|
hifhvrbd
|
||||||
|
jctkaclz
|
||||||
|
bftzisge
|
||||||
|
wofmrtss
|
||||||
|
fvojyyar
|
||||||
|
cbnhtlqp
|
||||||
|
jqozxhny
|
||||||
|
ybgsemfv
|
||||||
|
ooaqxove
|
||||||
|
gqvrbkqy
|
||||||
|
ppdcrmte
|
||||||
|
clfxucnu
|
||||||
|
toenbwtd
|
||||||
|
jzmywsup
|
||||||
|
inqsaqid
|
||||||
|
aehpaztz
|
||||||
|
gragbfrw
|
||||||
|
dlrjyzmu
|
||||||
|
sblqqwsb
|
||||||
|
gzruigwt
|
||||||
|
aplpzlui
|
||||||
|
wmrpyrjm
|
||||||
|
xyxwaeog
|
||||||
|
bhkpwzvo
|
||||||
|
egdpnujd
|
||||||
|
hbbdjlws
|
||||||
|
mbphcthb
|
||||||
|
bykhifcd
|
||||||
|
rrwkidpm
|
||||||
|
iztrhfnf
|
||||||
|
nydlpqze
|
||||||
|
dgulsfzt
|
||||||
|
eludirwj
|
||||||
|
iyvbrttp
|
||||||
|
aerocrzf
|
||||||
|
ejaearsc
|
||||||
|
dxruknqe
|
||||||
|
zmhbnkls
|
||||||
|
qnsykqvu
|
||||||
|
gotmslog
|
||||||
|
nbprjbxc
|
||||||
|
gtlykrzb
|
||||||
|
egethaib
|
||||||
|
flomperi
|
||||||
|
xcamglue
|
||||||
|
zceleqek
|
||||||
|
cnvgfdwf
|
||||||
|
dchfyogi
|
||||||
|
ygtzquvk
|
||||||
|
xxxunqji
|
||||||
|
amqehkhx
|
||||||
|
lsacrdtm
|
||||||
|
ybnapfyu
|
||||||
|
aiukmmqc
|
||||||
|
pepgjpqa
|
||||||
|
uermcxac
|
||||||
|
kapeodph
|
||||||
|
ozdanagr
|
||||||
|
pdjfzxdb
|
||||||
|
ioospvis
|
||||||
|
uhxuoyrd
|
||||||
|
jnnlwvdv
|
||||||
|
gnxaqkly
|
||||||
|
zsiucnpt
|
||||||
|
gtveajfy
|
||||||
|
tudfnxqg
|
||||||
|
pwugrcdu
|
||||||
|
obeeyadl
|
||||||
|
yhybzygs
|
||||||
|
enbwkfwn
|
||||||
|
iiziwmrj
|
||||||
|
rmldlsrp
|
||||||
|
wfqifmcn
|
||||||
|
aehofonk
|
||||||
|
bvxavoez
|
||||||
|
fwelvohr
|
||||||
|
eviaivqh
|
||||||
|
yjwslphn
|
||||||
|
wjdocdoc
|
||||||
|
dqgiuhli
|
||||||
|
geinepsk
|
||||||
|
npaemvap
|
||||||
|
ngnqfbvw
|
||||||
|
pobgwlhb
|
||||||
|
zufxdrkb
|
||||||
|
ggfdeuts
|
||||||
|
defhitoc
|
||||||
|
ndzvtils
|
||||||
|
oysmqhnq
|
||||||
|
tdmsbwqi
|
||||||
|
wwfvshad
|
||||||
|
btkerpuz
|
||||||
|
gwqvhvto
|
||||||
|
nflozwyk
|
||||||
|
tbiexdrg
|
||||||
|
okshetxm
|
||||||
|
mbgrhojh
|
||||||
|
eluzaxsb
|
||||||
|
hwqtiqwr
|
||||||
|
yrsddclj
|
||||||
|
wrsfnbdb
|
||||||
|
klfmnoqq
|
||||||
|
ztmkgmgg
|
||||||
|
xnkrekxs
|
||||||
|
qmdwfeuo
|
||||||
|
jwzfwhkv
|
||||||
|
nxjlnbiy
|
||||||
|
vdhnrrxi
|
||||||
|
smgjcxcp
|
||||||
|
aphleuvc
|
||||||
|
ljbadhdn
|
||||||
|
jkbnkinm
|
||||||
|
mjtovsxa
|
||||||
|
xpjsorxu
|
||||||
|
gicuerdc
|
||||||
|
azrhkarl
|
||||||
|
hpgwlzge
|
||||||
|
bweruitv
|
||||||
|
vnoglwep
|
||||||
|
pjwqtqdb
|
||||||
|
myvyrjye
|
||||||
|
xiqzlwfn
|
||||||
|
zqpnhjnn
|
||||||
|
hkzycpkb
|
||||||
|
fmoryqng
|
||||||
|
dfembrgo
|
||||||
|
dvguwian
|
||||||
|
rwgwffsn
|
||||||
|
ixgfpslt
|
||||||
|
rkxnxyff
|
||||||
|
ljankcms
|
||||||
|
kksozyit
|
||||||
|
cncygufc
|
||||||
|
agsevmlz
|
||||||
|
ectijrxs
|
||||||
|
rhvtaplx
|
||||||
|
hxddxhda
|
||||||
|
mpvfoaim
|
||||||
|
rtxkcevq
|
||||||
|
qythgaev
|
||||||
|
lnhqdrzc
|
20
y2016/src/bin/d1.rs
Normal file
20
y2016/src/bin/d1.rs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
use std::fs;
|
||||||
|
|
||||||
|
use y2016::days::d1;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
part1();
|
||||||
|
part2();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part1() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/1_input.txt")).unwrap();
|
||||||
|
println!("{}", d1::process_part1(&content));
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/1_input.txt")).unwrap();
|
||||||
|
println!("{}", d1::process_part2(&content));
|
||||||
|
}
|
20
y2016/src/bin/d2.rs
Normal file
20
y2016/src/bin/d2.rs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
use std::fs;
|
||||||
|
|
||||||
|
use y2016::days::d2;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
part1();
|
||||||
|
part2();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part1() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/2_input.txt")).unwrap();
|
||||||
|
println!("{}", d2::process_part1(&content));
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/2_input.txt")).unwrap();
|
||||||
|
println!("{}", d2::process_part2(&content));
|
||||||
|
}
|
20
y2016/src/bin/d3.rs
Normal file
20
y2016/src/bin/d3.rs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
use std::fs;
|
||||||
|
|
||||||
|
use y2016::days::d3;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
part1();
|
||||||
|
part2();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part1() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/3_input.txt")).unwrap();
|
||||||
|
println!("{}", d3::process_part1(&content));
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/3_input.txt")).unwrap();
|
||||||
|
println!("{}", d3::process_part2(&content));
|
||||||
|
}
|
20
y2016/src/bin/d4.rs
Normal file
20
y2016/src/bin/d4.rs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
use std::fs;
|
||||||
|
|
||||||
|
use y2016::days::d4;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
part1();
|
||||||
|
part2();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part1() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/4_input.txt")).unwrap();
|
||||||
|
println!("{}", d4::process_part1(&content));
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/4_input.txt")).unwrap();
|
||||||
|
println!("{}", d4::process_part2(&content));
|
||||||
|
}
|
14
y2016/src/bin/d5.rs
Normal file
14
y2016/src/bin/d5.rs
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
use y2016::days::d5;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
part1();
|
||||||
|
part2();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part1() {
|
||||||
|
println!("{}", d5::process_part1("ojvtpuvg"));
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2() {
|
||||||
|
println!("{}", d5::process_part2("ojvtpuvg"));
|
||||||
|
}
|
20
y2016/src/bin/d6.rs
Normal file
20
y2016/src/bin/d6.rs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
use std::fs;
|
||||||
|
|
||||||
|
use y2016::days::d6;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
part1();
|
||||||
|
part2();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part1() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/6_input.txt")).unwrap();
|
||||||
|
println!("{}", d6::process_part1(&content));
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/6_input.txt")).unwrap();
|
||||||
|
println!("{}", d6::process_part2(&content));
|
||||||
|
}
|
105
y2016/src/days/d1.rs
Normal file
105
y2016/src/days/d1.rs
Normal file
@ -0,0 +1,105 @@
|
|||||||
|
use core::panic;
|
||||||
|
use std::collections::{HashMap, HashSet};
|
||||||
|
|
||||||
|
#[derive(Clone, Copy, Hash, PartialEq, Eq)]
|
||||||
|
enum Orientation {
|
||||||
|
North,
|
||||||
|
East,
|
||||||
|
South,
|
||||||
|
West,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Orientation {
|
||||||
|
fn turn(&mut self, direction: &str) {
|
||||||
|
match direction {
|
||||||
|
"R" => match self {
|
||||||
|
Orientation::North => *self = Self::East,
|
||||||
|
Orientation::East => *self = Self::South,
|
||||||
|
Orientation::South => *self = Self::West,
|
||||||
|
Orientation::West => *self = Self::North,
|
||||||
|
},
|
||||||
|
"L" => match self {
|
||||||
|
Orientation::North => *self = Self::West,
|
||||||
|
Orientation::West => *self = Self::South,
|
||||||
|
Orientation::South => *self = Self::East,
|
||||||
|
Orientation::East => *self = Self::North,
|
||||||
|
},
|
||||||
|
_ => panic!("Wrong direction. Only R and L allowed"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn process_part1(input: &str) -> i32 {
|
||||||
|
let mut orientation = Orientation::North;
|
||||||
|
let mut movements = HashMap::new();
|
||||||
|
let mut input = input.to_string();
|
||||||
|
input.pop();
|
||||||
|
for movement in input.split(", ") {
|
||||||
|
let (direction, blocks) = movement.split_at(1);
|
||||||
|
orientation.turn(direction);
|
||||||
|
let blocks = blocks.parse::<i32>().unwrap();
|
||||||
|
movements
|
||||||
|
.entry(orientation)
|
||||||
|
.and_modify(|distance| *distance += blocks)
|
||||||
|
.or_insert(blocks);
|
||||||
|
}
|
||||||
|
let up = movements.get(&Orientation::North).unwrap_or(&0);
|
||||||
|
let down = movements.get(&Orientation::South).unwrap_or(&0);
|
||||||
|
let left = movements.get(&Orientation::West).unwrap_or(&0);
|
||||||
|
let right = movements.get(&Orientation::East).unwrap_or(&0);
|
||||||
|
(up - down).abs() + (left - right).abs()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn process_part2(input: &str) -> i32 {
|
||||||
|
let mut orientation = Orientation::North;
|
||||||
|
let mut visited_coords = HashSet::new();
|
||||||
|
let mut horizontal: i32 = 0;
|
||||||
|
let mut vertical: i32 = 0;
|
||||||
|
let mut input = input.to_string();
|
||||||
|
input.pop();
|
||||||
|
for movement in input.split(", ") {
|
||||||
|
let (direction, blocks) = movement.split_at(1);
|
||||||
|
orientation.turn(direction);
|
||||||
|
let blocks = blocks.parse::<i32>().unwrap();
|
||||||
|
for _block in 1..=blocks {
|
||||||
|
match orientation {
|
||||||
|
Orientation::North => vertical += 1,
|
||||||
|
Orientation::South => vertical -= 1,
|
||||||
|
Orientation::East => horizontal += 1,
|
||||||
|
Orientation::West => horizontal -= 1,
|
||||||
|
}
|
||||||
|
if visited_coords.contains(&(horizontal, vertical)) {
|
||||||
|
return horizontal.abs() + vertical.abs();
|
||||||
|
} else {
|
||||||
|
visited_coords.insert((horizontal, vertical));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
panic!("Did not find easter bunny hq");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
const INPUT1: &str = "R2, L3 ";
|
||||||
|
const INPUT2: &str = "R2, R2, R2 ";
|
||||||
|
const INPUT3: &str = "R5, L5, R5, R3 ";
|
||||||
|
const INPUT4: &str = "R8, R4, R4, R8 ";
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part1() {
|
||||||
|
let result = process_part1(INPUT1);
|
||||||
|
assert_eq!(result, 5);
|
||||||
|
let result = process_part1(INPUT2);
|
||||||
|
assert_eq!(result, 2);
|
||||||
|
let result = process_part1(INPUT3);
|
||||||
|
assert_eq!(result, 12);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part2() {
|
||||||
|
let result = process_part2(INPUT4);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
}
|
133
y2016/src/days/d2.rs
Normal file
133
y2016/src/days/d2.rs
Normal file
@ -0,0 +1,133 @@
|
|||||||
|
use core::panic;
|
||||||
|
|
||||||
|
pub fn process_part1(input: &str) -> String {
|
||||||
|
let mut position = (0, 0);
|
||||||
|
input
|
||||||
|
.lines()
|
||||||
|
.map(|line| {
|
||||||
|
for char in line.chars() {
|
||||||
|
match char {
|
||||||
|
'U' => {
|
||||||
|
if position.1 != -1 {
|
||||||
|
position.1 -= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'D' => {
|
||||||
|
if position.1 != 1 {
|
||||||
|
position.1 += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'L' => {
|
||||||
|
if position.0 != -1 {
|
||||||
|
position.0 -= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'R' => {
|
||||||
|
if position.0 != 1 {
|
||||||
|
position.0 += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_ => panic!("Unknown direction {char}"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
key_from_position(position)
|
||||||
|
})
|
||||||
|
.collect::<Vec<String>>()
|
||||||
|
.join("")
|
||||||
|
}
|
||||||
|
|
||||||
|
fn key_from_position(position: (i32, i32)) -> String {
|
||||||
|
match position {
|
||||||
|
(-1, -1) => "1",
|
||||||
|
(0, -1) => "2",
|
||||||
|
(1, -1) => "3",
|
||||||
|
(-1, 0) => "4",
|
||||||
|
(0, 0) => "5",
|
||||||
|
(1, 0) => "6",
|
||||||
|
(-1, 1) => "7",
|
||||||
|
(0, 1) => "8",
|
||||||
|
(1, 1) => "9",
|
||||||
|
(_, _) => panic!("No key at position {}, {}", position.0, position.1),
|
||||||
|
}
|
||||||
|
.to_string()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn process_part2(input: &str) -> String {
|
||||||
|
let mut position: (i32, i32) = (-2, 0);
|
||||||
|
input
|
||||||
|
.lines()
|
||||||
|
.map(|line| {
|
||||||
|
for char in line.chars() {
|
||||||
|
let v_bound = 2 - position.0.abs();
|
||||||
|
let h_bound = 2 - position.1.abs();
|
||||||
|
match char {
|
||||||
|
'U' => {
|
||||||
|
if position.1 > -v_bound {
|
||||||
|
position.1 -= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'D' => {
|
||||||
|
if position.1 < v_bound {
|
||||||
|
position.1 += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'L' => {
|
||||||
|
if position.0 > -h_bound {
|
||||||
|
position.0 -= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
'R' => {
|
||||||
|
if position.0 < h_bound {
|
||||||
|
position.0 += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_ => panic!("Unknown direction {char}"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
key_from_position_p2(position)
|
||||||
|
})
|
||||||
|
.collect::<Vec<String>>()
|
||||||
|
.join("")
|
||||||
|
}
|
||||||
|
|
||||||
|
fn key_from_position_p2(position: (i32, i32)) -> String {
|
||||||
|
match position {
|
||||||
|
(0, -2) => "1",
|
||||||
|
(-1, -1) => "2",
|
||||||
|
(0, -1) => "3",
|
||||||
|
(1, -1) => "4",
|
||||||
|
(-2, 0) => "5",
|
||||||
|
(-1, 0) => "6",
|
||||||
|
(0, 0) => "7",
|
||||||
|
(1, 0) => "8",
|
||||||
|
(2, 0) => "9",
|
||||||
|
(-1, 1) => "A",
|
||||||
|
(0, 1) => "B",
|
||||||
|
(1, 1) => "C",
|
||||||
|
(0, 2) => "D",
|
||||||
|
(_, _) => panic!("No key at position {}, {}", position.0, position.1),
|
||||||
|
}
|
||||||
|
.to_string()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
const INPUT: &str = "ULL
|
||||||
|
RRDDD
|
||||||
|
LURDL
|
||||||
|
UUUUD";
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part1() {
|
||||||
|
let result = process_part1(INPUT);
|
||||||
|
assert_eq!(result, "1985".to_string());
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part2() {
|
||||||
|
let result = process_part2(INPUT);
|
||||||
|
assert_eq!(result, "5DB3".to_string());
|
||||||
|
}
|
||||||
|
}
|
60
y2016/src/days/d3.rs
Normal file
60
y2016/src/days/d3.rs
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
pub fn process_part1(input: &str) -> i32 {
|
||||||
|
input
|
||||||
|
.lines()
|
||||||
|
.map(|line| {
|
||||||
|
let sides = line
|
||||||
|
.split_whitespace()
|
||||||
|
.map(|side| side.parse::<u32>().unwrap())
|
||||||
|
.collect::<Vec<u32>>();
|
||||||
|
if sides[0] + sides[1] > sides[2]
|
||||||
|
&& sides[0] + sides[2] > sides[1]
|
||||||
|
&& sides[1] + sides[2] > sides[0]
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
0
|
||||||
|
})
|
||||||
|
.sum()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn process_part2(input: &str) -> u32 {
|
||||||
|
input
|
||||||
|
.lines()
|
||||||
|
.map(|line| {
|
||||||
|
line.split_whitespace()
|
||||||
|
.map(|side| side.parse::<u32>().unwrap())
|
||||||
|
.collect::<Vec<u32>>()
|
||||||
|
})
|
||||||
|
.collect::<Vec<Vec<u32>>>()
|
||||||
|
.chunks(3)
|
||||||
|
.map(|line_triple| {
|
||||||
|
(0..3)
|
||||||
|
.map(|triangle_idx| {
|
||||||
|
if line_triple[0][triangle_idx] + line_triple[1][triangle_idx]
|
||||||
|
> line_triple[2][triangle_idx]
|
||||||
|
&& line_triple[0][triangle_idx] + line_triple[2][triangle_idx]
|
||||||
|
> line_triple[1][triangle_idx]
|
||||||
|
&& line_triple[1][triangle_idx] + line_triple[2][triangle_idx]
|
||||||
|
> line_triple[0][triangle_idx]
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
0
|
||||||
|
})
|
||||||
|
.sum::<u32>()
|
||||||
|
})
|
||||||
|
.sum()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
const INPUT: &str = " 5 10 25";
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part1() {
|
||||||
|
let result = process_part1(INPUT);
|
||||||
|
assert_eq!(result, 0);
|
||||||
|
}
|
||||||
|
}
|
119
y2016/src/days/d4.rs
Normal file
119
y2016/src/days/d4.rs
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
use std::collections::HashMap;
|
||||||
|
|
||||||
|
pub fn process_part1(input: &str) -> u32 {
|
||||||
|
input
|
||||||
|
.lines()
|
||||||
|
.map(|line| {
|
||||||
|
let name = get_name(line);
|
||||||
|
let id = get_id(line);
|
||||||
|
let checksum = get_checksum(line);
|
||||||
|
let stats = get_freq_and_position(&name);
|
||||||
|
let mut sorted_stats = stats.into_iter().collect::<Vec<(char, i32)>>();
|
||||||
|
sorted_stats.sort_by(|(a, a_freq), (b, b_freq)| match b_freq.cmp(a_freq) {
|
||||||
|
std::cmp::Ordering::Less => std::cmp::Ordering::Less,
|
||||||
|
std::cmp::Ordering::Greater => std::cmp::Ordering::Greater,
|
||||||
|
std::cmp::Ordering::Equal => a.cmp(b),
|
||||||
|
});
|
||||||
|
for (char, _stats) in sorted_stats.into_iter().take(5) {
|
||||||
|
if !checksum.contains(char) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
id
|
||||||
|
})
|
||||||
|
.sum()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn process_part2(input: &str) -> String {
|
||||||
|
input
|
||||||
|
.lines()
|
||||||
|
.filter(|line| {
|
||||||
|
let name = get_name(line);
|
||||||
|
let checksum = get_checksum(line);
|
||||||
|
let stats = get_freq_and_position(&name);
|
||||||
|
let mut sorted_stats = stats.into_iter().collect::<Vec<(char, i32)>>();
|
||||||
|
sorted_stats.sort_by(|(a, a_freq), (b, b_freq)| match b_freq.cmp(a_freq) {
|
||||||
|
std::cmp::Ordering::Less => std::cmp::Ordering::Less,
|
||||||
|
std::cmp::Ordering::Greater => std::cmp::Ordering::Greater,
|
||||||
|
std::cmp::Ordering::Equal => a.cmp(b),
|
||||||
|
});
|
||||||
|
for (char, _stats) in sorted_stats.into_iter().take(5) {
|
||||||
|
if !checksum.contains(char) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
true
|
||||||
|
})
|
||||||
|
.map(|line| {
|
||||||
|
let name = get_name(line);
|
||||||
|
let id = get_id(line);
|
||||||
|
format!("{}: {id}", rot(&name, id))
|
||||||
|
})
|
||||||
|
.collect::<Vec<String>>()
|
||||||
|
.join("\n")
|
||||||
|
}
|
||||||
|
|
||||||
|
fn rot(name: &str, count: u32) -> String {
|
||||||
|
let mut decrypted = Vec::new();
|
||||||
|
for &byte in name.as_bytes() {
|
||||||
|
if byte == b'-' {
|
||||||
|
decrypted.push(b' ');
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let shift = (byte - b'a') as u32 + count;
|
||||||
|
decrypted.push((shift % 26) as u8 + b'a');
|
||||||
|
}
|
||||||
|
String::from_utf8(decrypted).unwrap()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_name(room: &str) -> String {
|
||||||
|
room.rsplit_once("-").unwrap().0.to_string()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_id(room: &str) -> u32 {
|
||||||
|
let id_start = room.rfind("-").unwrap() + 1;
|
||||||
|
let id_end = room.find("[").unwrap();
|
||||||
|
room[id_start..id_end].parse().unwrap()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_checksum(room: &str) -> String {
|
||||||
|
let id_start = room.find("[").unwrap() + 1;
|
||||||
|
room[id_start..room.len() - 1].to_string()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_freq_and_position(name: &str) -> HashMap<char, i32> {
|
||||||
|
let mut freq = HashMap::new();
|
||||||
|
for char in name.chars() {
|
||||||
|
if char == '-' {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
freq.entry(char)
|
||||||
|
.and_modify(|count| {
|
||||||
|
*count += 1;
|
||||||
|
})
|
||||||
|
.or_insert(1);
|
||||||
|
}
|
||||||
|
freq
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::{rot, *};
|
||||||
|
|
||||||
|
const INPUT: &str = "aaaaa-bbb-z-y-x-123[abxyz]
|
||||||
|
a-b-c-d-e-f-g-h-987[abcde]
|
||||||
|
not-a-real-room-404[oarel]
|
||||||
|
totally-real-room-200[decoy]";
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part1() {
|
||||||
|
let result = process_part1(INPUT);
|
||||||
|
assert_eq!(result, 1514);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part2() {
|
||||||
|
let res = rot("qzmt-zixmtkozy-ivhz", 343);
|
||||||
|
assert_eq!(res, "very encrypted name".to_string());
|
||||||
|
}
|
||||||
|
}
|
83
y2016/src/days/d5.rs
Normal file
83
y2016/src/days/d5.rs
Normal file
@ -0,0 +1,83 @@
|
|||||||
|
use std::io::{stdout, Write};
|
||||||
|
|
||||||
|
pub fn process_part1(input: &str) -> String {
|
||||||
|
let mut password = String::new();
|
||||||
|
let mut n = 0;
|
||||||
|
let mut col = 1;
|
||||||
|
print!("________");
|
||||||
|
loop {
|
||||||
|
let hash = md5::compute(format!("{input}{n}"));
|
||||||
|
let hash = format!("{hash:x}");
|
||||||
|
let mut chars = hash.chars().skip(5);
|
||||||
|
let char = chars.next().unwrap();
|
||||||
|
print!("\x1b[{col}G{char}");
|
||||||
|
if hash.split_at(5).0 == "00000" {
|
||||||
|
col += 1;
|
||||||
|
password.push(char);
|
||||||
|
}
|
||||||
|
if password.len() == 8 {
|
||||||
|
println!();
|
||||||
|
return password;
|
||||||
|
}
|
||||||
|
n += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn process_part2(input: &str) -> String {
|
||||||
|
let mut password = vec!['_'; 8];
|
||||||
|
let mut n = 0;
|
||||||
|
print!("________");
|
||||||
|
loop {
|
||||||
|
if !password.contains(&'_') {
|
||||||
|
println!();
|
||||||
|
return password.into_iter().collect();
|
||||||
|
}
|
||||||
|
let hash = md5::compute(format!("{input}{n}"));
|
||||||
|
let hash = format!("{hash:x}");
|
||||||
|
if hash.split_at(5).0 == "00000" {
|
||||||
|
let mut chars = hash.chars().skip(5);
|
||||||
|
let position = match chars.next().unwrap().to_digit(10) {
|
||||||
|
Some(position) => {
|
||||||
|
if position > 7 {
|
||||||
|
n += 1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if password[position as usize] != '_' {
|
||||||
|
n += 1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
position
|
||||||
|
}
|
||||||
|
None => {
|
||||||
|
n += 1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
let char = chars.next().unwrap();
|
||||||
|
print!("\x1b[{}G{char}", position + 1);
|
||||||
|
//println!("{}", password.clone().into_iter().collect::<String>());
|
||||||
|
let _ = stdout().flush();
|
||||||
|
password[position as usize] = char;
|
||||||
|
}
|
||||||
|
n += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
const INPUT: &str = "abc";
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part1() {
|
||||||
|
let result = process_part1(INPUT);
|
||||||
|
assert_eq!(result, "18f47a30".to_string());
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part2() {
|
||||||
|
let result = process_part2(INPUT);
|
||||||
|
assert_eq!(result, "05ace8e3".to_string());
|
||||||
|
}
|
||||||
|
}
|
73
y2016/src/days/d6.rs
Normal file
73
y2016/src/days/d6.rs
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
use std::collections::HashMap;
|
||||||
|
|
||||||
|
pub fn process_part1(input: &str) -> String {
|
||||||
|
let line_len = input.find("\n").unwrap();
|
||||||
|
let mut rows: Vec<HashMap<char, u32>> = vec![HashMap::new(); line_len];
|
||||||
|
input.lines().for_each(|line| {
|
||||||
|
for (idx, chara) in line.chars().enumerate() {
|
||||||
|
rows[idx]
|
||||||
|
.entry(chara)
|
||||||
|
.and_modify(|count| *count += 1)
|
||||||
|
.or_insert(1);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
let mut res = String::new();
|
||||||
|
for row in rows {
|
||||||
|
let most_common = row.iter().max_by(|a, b| a.1.cmp(b.1)).unwrap().0;
|
||||||
|
res.push(*most_common);
|
||||||
|
}
|
||||||
|
res
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn process_part2(input: &str) -> String {
|
||||||
|
let line_len = input.find("\n").unwrap();
|
||||||
|
let mut rows: Vec<HashMap<char, u32>> = vec![HashMap::new(); line_len];
|
||||||
|
input.lines().for_each(|line| {
|
||||||
|
for (idx, chara) in line.chars().enumerate() {
|
||||||
|
rows[idx]
|
||||||
|
.entry(chara)
|
||||||
|
.and_modify(|count| *count += 1)
|
||||||
|
.or_insert(1);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
let mut res = String::new();
|
||||||
|
for row in rows {
|
||||||
|
let most_common = row.iter().max_by(|a, b| b.1.cmp(a.1)).unwrap().0;
|
||||||
|
res.push(*most_common);
|
||||||
|
}
|
||||||
|
res
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
const INPUT: &str = "eedadn
|
||||||
|
drvtee
|
||||||
|
eandsr
|
||||||
|
raavrd
|
||||||
|
atevrs
|
||||||
|
tsrnev
|
||||||
|
sdttsa
|
||||||
|
rasrtv
|
||||||
|
nssdts
|
||||||
|
ntnada
|
||||||
|
svetve
|
||||||
|
tesnvt
|
||||||
|
vntsnd
|
||||||
|
vrdear
|
||||||
|
dvrsen
|
||||||
|
enarar";
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part1() {
|
||||||
|
let result = process_part1(INPUT);
|
||||||
|
assert_eq!(result, *"easter");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part2() {
|
||||||
|
let result = process_part2(INPUT);
|
||||||
|
assert_eq!(result, *"advent");
|
||||||
|
}
|
||||||
|
}
|
11
y2016/src/days/mod.rs
Normal file
11
y2016/src/days/mod.rs
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
pub mod d1;
|
||||||
|
|
||||||
|
pub mod d2;
|
||||||
|
|
||||||
|
pub mod d3;
|
||||||
|
|
||||||
|
pub mod d4;
|
||||||
|
|
||||||
|
pub mod d5;
|
||||||
|
|
||||||
|
pub mod d6;
|
@ -1 +1 @@
|
|||||||
|
pub mod days;
|
||||||
|
@ -4,3 +4,6 @@ version = "0.1.0"
|
|||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
regex = "1.11.1"
|
||||||
|
utils = { workspace = true }
|
||||||
|
itertools = { workspace = true }
|
||||||
|
41
y2024/resources/10_input.txt
Normal file
41
y2024/resources/10_input.txt
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
21056789894321015012980123498787601045687
|
||||||
|
32346543765601156703474544567896012138796
|
||||||
|
10107632659892349821563678989345643029655
|
||||||
|
23218101256781015430412101071234754910544
|
||||||
|
14569870345432016321003012560109867801033
|
||||||
|
05678963256789127879854303456078105932122
|
||||||
|
18723450109898038910765210010563254541001
|
||||||
|
69011201298788945125898998323454569679852
|
||||||
|
78760345345654876034787677401235378089760
|
||||||
|
89456896012503876965014586512765432123601
|
||||||
|
32387987003412965872123298703890101984512
|
||||||
|
01291876121101234989456107654965278854603
|
||||||
|
00180145030980325678327890217874369763254
|
||||||
|
14343232145671013454310691307893454610169
|
||||||
|
23432165430110302169234582456732108905678
|
||||||
|
96547078923231231078105673454321097214523
|
||||||
|
87678432214348940987017894765870986341014
|
||||||
|
96589541009857654320123765891963475498765
|
||||||
|
01434630111766789010432143210452560167876
|
||||||
|
32345721210951999016549054789301001456965
|
||||||
|
21076890129810878321678945643219812332109
|
||||||
|
78789001234723765430321238756106734323458
|
||||||
|
09654160345654210389210109987005125010767
|
||||||
|
12323271657601345678780125678014056541893
|
||||||
|
25414987798542343456690034329123987932012
|
||||||
|
56905677810439652987501145016510345801101
|
||||||
|
67856298923128721987432156987421256789210
|
||||||
|
22347107654098910876543087870330107654301
|
||||||
|
11298231012347654305678898981278798987652
|
||||||
|
00109545691056763211219767874569678690343
|
||||||
|
12065456783345894320105656913450569541289
|
||||||
|
43874321092132101899234541002321256632176
|
||||||
|
54930010561001234788765432211056746789045
|
||||||
|
67821123472390545654123101347849839874330
|
||||||
|
78934010589487698763034567456931028765221
|
||||||
|
67785697696590101672105698741022210540100
|
||||||
|
58696788787781234589789789012013307632101
|
||||||
|
49545459810170301075674654323454458989032
|
||||||
|
30432365923965432165463210498569567976543
|
||||||
|
21021876854876523678354112347678678875301
|
||||||
|
30010966763987014589210001456565589765432
|
6
y2024/resources/3_input.txt
Normal file
6
y2024/resources/3_input.txt
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
$ mul(402,190))&<why(211,617)how()/;mul(506,313)[^^<!$#when(636,198),]mul(744,268)#&!what()&!;mul(631,641)where()@select()!@?(:;how()mul(25,288)&~^select()mul(683,657)'mul(505,315)+~:-mul(671,741)]{mul(397,54))?mul(511,935)where()select()where()-mul(525,623)mul(206,770){/}don't()from()mul(260,967)-how() -/[^(mul(500,994)!:mul(391,833)#)>who(),where(376,378)why();$mul(394,346)%:]^from()>:mul(130,944)who()>where()select()}:mul(952,439)?/how()from()^$why()do()@*{mul(557,916)&(who()mul(445,933):(,;>?mul(108,268)don't()select(574,441)-mul(132,870)from(){mul(441,660)why(),from();mul(919,820):#/%)why()*mul(194,790);#/^#select()?mul(981,514)$what(796,873)when() %from()mul(164,772):&:select()@mul(396,80)select()what()%),) mul(213,928){?who();@@mul(320,229)where(348,623)*when()when(180,565)mul(214,912)!mul(848,738)from()+):^how()-&[mul(378,433)select():%~mul(696,421)mul(364,341)?^don't()*&mul(89,441)how()select()what(),select()mul(423,822),?&(how()']what())$mul(21,844)&,select()/>^)'mul(469,230))when()where()*,#mul(569,594)why()what():{ select(200,250){())mul(661,628)#)why()from(325,19)who() mul(758,985){%&where()!how(213,616)*mul(394,768)mul(831,12)*where()>who(986,151)mul(962,504)$:<!)where()%$&when()mul(900,577)<>^[>;mul(948,363)$@;]mul(857,273) how() ,:!select(),[mul(31,766)} *mul(372,138)+,#!~(>;%mul(774,958)#}&+why()*when()mul(560,137)}mul(72,718)when()^{]':{how()/mul(985,120)@*[do()$how()mul(891,69)select()mul(546,834)@$mul(767,879)$$!/&why()?mul(876,495){^/&)who()<~]mul(911,71){?#mul(116,462);:%<^'?}~why()mul(258,286)from()^#^?how()&who()mul(97,540)select()who()do(){^~~<why(955,532)@[ how()mul(682,75)~){?where()<mul(63,26)-where()^ <^mul(336,475)&when()mul(637,386)+*when()<^]mul(846,915)!mul(795,805)$what()[~#*@:/@mul(370,651)?$select()^how()}!mul(705,839)~*;%!^+why()do()!:)[#{mul(112,21)*mul(285,252)mul(451,396){&> )'mul(57,589)when()**mul(554,575)*+^mul(856,360)mul(530,200)@/&}*where()mul(588,2)who()$]mul(604,72)who()}from(524,212)mul(250,680)<;@;@how()?#mul(555,956)%(;:+<{(who()select()mul(377,822)+when()@[&{&from();*mul(457,538)mul(52,298)who()%when()%who()how()from(9,264)mul(452,941)where()+?,-don't()when()select()<mul(956,185)^}don't(){$/~how()][ #)mul(717,593,when(64,768):what()%(mul(922,407)#why(646,569)$(~:{#mul(3,438)+/#<*select())how()don't()!where();mul(853,725)%?}/!from()<?*mul!+>$''mul(229,512){{from()what()?!'^select()mul(185,787)<*mul(688,834) @@what(),}select()>mul(825,27))~&!;mul(796,378)*+(-select(); mul!):{!;who()$how()why()don't()select()how(451,129)]#*^mul(852,354)[mul(596,889)mul(476,207):#what()-+mul(467,323) from()why()}(}^&:mul(955,498)]{;mul(797,177)mul(321,350):mul(784,667)mul(707,927)~%#why()why()what();mul(515,511)from(589,691)mul*&[mul(884,558)/mul(824,926))+from(331,316)where()!*!:mul(938,881)]mul(287,358what()@from(226,364)+:^)-when(361,935)select()mul(324,887)@where()select())(mul(430>&][mul(381,417)}*why()why()!*#~mul(729,14)>%what()'where(){}mul(483,820)when(206,921)&when()@how()mul(608,185)how(5,376)%mul(150,182)><when()@:@mul(953,86)mul(332,881)*mul(688,895)^<select()!%<+mul(5,990)>]/!( (+mul(78,588)what()@ why()when()*+from();;mul(837,417)who()mul(786,516)'how()%:~;%]who()<mul(576,960),@why()<<+'mul(160,572)*why()where()-when(353,689){[;mul(634,920)mul(482,207)( (when()<>:;-mul(917,130)
|
||||||
|
why();[what()(,]mul(177,501)mul(346,27)when(428,856)who(){how()mul(513,432)what()']&where(),>?select(),do()+how()![where()mul(399,972)mul(862,828)when()?^&)mul(200,579)how()who()mul(79,535) <don't()<mul(450,265@/!mul(332,269)/select()why()-mul(436,976)&;$#-;^)what(878,202)mul(114,418}-~<! ,who()mul(394,75)<from()mul(51,262)from()#what()^*don't()%mul(133,6)mul(63,773)$%; ';@^what()!mul(142,703)where(178,667)}/(don't()how()mul(451,569)-~mul(395,265)+@>{select(684,626)){where()?)mul(52,852)&< @what()^what()]mul(807,491)&#@mul(130,14)<what()who():@mul(195,735)]when()<how()where()$,how()where()mul(310,933);[<$)mul(479,998),from()/where()@mul(583,819);select()}+$when()*mul(100,443)/$)mul(300,699)select()# #what()?:(^mul(824,627)#>mul(884,328)when()%who(255,459)mul(434,697)?how(),,*)#mul(522,208) !&/mul(296,945)-~!what()when(),,%mul(127[mul(637,905)~from()/where()/where()mul(375,117)(<;select()how():!^{mul(856from()][from()}&when(331,921)mul(873,410)'@/mul(777,739>when()!^!)mul(460,138)!'{why()<~/<mul(820,107)/<(*;& mul(887,760)/mul(701,198)+@@,{ where():mul(108,795)why()]#&don't()#+where()mul(491,644)mul(148,474)!mul(216,458)<,when()[(#mul(205^from()]@(where()?@mul(808,178)!@from();~%:]})mul(807,17)>when()when()+:(what()@)mul(97,8)mul(324,169)select()mul(396,755)!#select()^&#];when()don't()$where()/^{~{how()mul(856,118)$*who()who()#when()mul(683,431)/mul(946,398)mul(902,742)(mul(448,592)'mul(750,527)]/mul(98,232*,select()(!~/<{mul(104,754)^mul(959,509) '$~@/do()when(642,16);what() <#(+!mul(564,313)$]'mul(945from()*]!who()[%who()'*#don't()<![select()where(387,153)mul(283,666)mul(323,423)what()}where(552,799)@#what()mul(897,782)&why();where()[$#!select(){mul(965,10)?$mul(515,710)why(),!?*:mul(442,335)&<who(526,485)who()!)when():%>mul(410,907)@what()select()select()?mul(21,969)mul(942,472)' what() ?select()why()^do() /$-who()::mul(36,303)~mul(783,530)'$what()$:%?mul(74,743);~^;>do()who()who()>}mul(391@^mul(681,793)where()%!-,mul(171,461)![<<&don't()+mul(707,127)^?mul(641,578)where()how()what()what(89,960)}(]mul(431,871)mul,+mul(610,323)<why()what()mul(343,108)'mul(902,793)[where(661,90)#who())?#![}mul(535,881)mul(782,524)select()>why()why()mul(662,436)'&[^mul(397%from()>*why()%-mul(186,254)?*]!who()!select(839,279)<mul(518,739)}from()don't()(where()how()} who()~mul(394,539)^why()where()+?from()(mul(32,988)]mul(459,826)};mul(95,871)?&{select()&/;mul(626,919) '++{;from()mul(161,733),#%mul(662,339)* +mul(246,943)where()#what()what(){+,;,who()mul(555,251)what()what()%(mul(374,548)>]+select()mul(84,228)[mul(536,784)where()+*how()mul(893,249;what()(mul(917,825)mul&mul(891,755))${,#@@mul(511,464)what()where()'when()mul:who()mul(730,485)][,mul(592,512)[why(52,524),*]@select()(mul(829})' *~- [)mul(111,611)how(838,283)+#{>when()?who(764,939)from()mul(925,978)[*#who(182,485)how()select()mul(538,803)>&where()how()$what() }{mul(671,684)/why(106,337)+<#(mul(453,150)++[--from(475,981)where()&{mul(197,568) &;/mulwhy()~(@*who()/!#mul(466,89)'why(594,849)(select()( mul(30,648)what()from()(select()mul(829,947)mul(903,174),-,@select()from()select()mul(462,421)&when()!when()^%;),mul(631,703)mul(917,971)mul(473,892) don't(){/~>,why()[*mul(800,49)when()why()>%)*who())]mul(571,734)<(mul(283,803)~mul(752,111)why(); %<,(where()'&mul(393,613)mul(257,15)&mul(14,159)]mul(502,324)what()how()when(294,303)-%:when()mul(542,760)>}why(),how()mul(726,492)mul(169,827)^: ^~[ mul(859how()#how()))%@mul(564,652) mul(403,8)~mul(507,846)
|
||||||
|
!!{[){mul(470,989)#mul(58,989+who()?*{! [mul(498,119)%~{mul(206,173)who()from()how()}%^*;how()@mul(154,721){~mul(451,125)<-mul(386,969)!<:mul(890,369)!*{+]-,where()when()when()mul(657,994)]why():mul(898,340) how()(#who()<mul(352,838)[%)who()?how():&when(173,843)mul(21,663)how()&]^}-^>where()mul(502,23) mul(681,55$( ,mul(807,634)&${what()~what()mul(176,10)'(what()why()@~]mul(564,162)!%select()mul(526,996)!-mul(993,991)/'!?mul(118,854)?~-?mul(74,965)who())-({when()select()]mul(913,115)/[who()where()when()<%!mul, ]~#/ mul(990,573)&from()^}%$mul(226,132)mul(431,657)[who())where(690,880)',- ,mul(21,346)what()how(298,600)-mul(174,190)mul(755,197)who(){>&$what()from(853,522)mul(560,222)what()$when()[mul(933)from(881,714)[when()#~(]{mul(67,261)!mul(775,385)don't()[who()how() where()/mul(381,343)do()<}$%;<>how()'mul(460,761)(mul(83,660)[where()mul(539,808'&select()*don't()(mul(274,997)mul(274,981)}/#who()[]mul(414,738){$do()&<?:what()&why()%who()mul(638,411)&[?don't()when()+ ?> mul(672,195)'}<<mul(772,21)>@[&;select()mul(90,631) $*mul(869,108)^$+:([&#!mul(801when()~}mul(827,339)who(851,624)%&why()'when()'mul(586,599)+:'/>when()[!mul(139,133)*'!$){#~?mul(565,566)mul(618,83)+mul(765,263)why()/+how()#'{how(521,404) !mul(344,377)/select(536,767)@why()-why()'where()why(468,917)mul(302,909){:mul(632,525)from()>who()(@who()mul(383,809)<>select();when();select()who()?<do()$*mul(597,59)when()/(}mul(79,440)$mul(565,850){[how()where()mul(368,953):*}from();!,-mul(767,182)what()from()$why()when()%/&mul(410,122)%!-mul(246,726)$when()%mul(343,179) {-?why()mul(816,33),:;%#;$mul(340,519(mul(858,204)select()@!:mul(739,205)why();*]/'select()mul(891,670)]why(5,493)how()[?when(519,92)when()mul(790,933)/**>'>where()select()mul(142,6)*:(>'mul(963,13),don't() how()when()/'*mul(18,872)'mul(465,102)(#+mul(590,510! from()mul(133,919)}[,from()from() (mul(820,448)[mul(442,548)mul(977,871)}who()+select()who()mul(606,74)^:)mul>!mul(129,889)/+mul(310,726)who()from()*what()mul(49,487)/)where()]:mul(615,825)}}don't()mul(266,421)}don't()(how();select(908,869)+how()where()mul(56,163)mul(288,896)mul(872^mul(391,531)$mul(152,112)'^,from()mul(889,862)mul(562,569)^ *{';when()!(mul(236,30)>]-why()]what(83,46)when()/>how()mul(634,71)?,?{^?mul(438,21)what()mul(993,470){<[when()where()from()mul(190,720)/%where()@mul(339,904why()where()mul(123,502);) /mul(178,842)how()mul(737,234) !mul(985,241)**?~-mul(349,197)<[mul(22,535)&(&why()mul(460,416)when()&do()[how()when(), mul(250,415how()@-%*:who()*mul(181,581):@mul(353,992)*when()what()mul(247,102)where()?why(607,695)#don't()?when()from()%@<mul(624,872)+select()-^mul(589,215)mul(626,138)mul(726,746)>)from()where()mul(738,410)!where(808,172),;:*'mul/^(#mul(545,174)^:when()-$^'mul(670,694(why(117,443):mul(12,180);'@what()mul(314,309)mul(790,161)&what()where(620,466)&who()[-]*where()mul(147,178)why()^][}'~$mul(441,381){ mul(138,111)<+) <mul(795,46)mul(207,817)why()mul(360,197)?,,where()!$select()mul(908,513)'when()*&,~{:don't()mul(976,931)}$]/select()@>what()[mul(842,241):(from()how()$:mul(329,926)don't()-@$-from(245,221)]+mul(161,472):/how()mul(178,909)mul(729,950)>]mul(310,170)mul(868,180)}mul(685,89)}what(690,794)!who()!mul(670,698']>~mul(464,132)-when(827,257)?)when()#/?when()#!/usr/bin/perlfrom()--{where())what()(mul(54,26)
|
||||||
|
@)+mul(601,827)from()how()]'how()[where()how()]]mul(943,407)what()/why()}}mul(516,728)<-+ why() ?'mul(651,195)who(472,480)select()^{}/]mul(159,449)#{select()]>why(457,182)mul(889,383)mul(717,768)~>{select()from()~@{>'mul(25,532#}who())mul(582,481)where()>$?) !mul(232,573)mul(27,868)^~from()#where()do()how()>mul(24,375)'!;,,mul(34,942)?-mul(511,814)<:{{how()}{what()mul(369,392)mul(643,828)mul(12,913)from()~select(){ +$$mul(384,257){who()!{$ )#/!mul(607,455)how()*(( /-+::mul(747,552)mul(333,364)how()*?select(914,438)% ~,mul(257,957)do()where(){+#mul(85,930)when()^'<~^/ mul(538,737)?,%what()*-^ where()mul(959,252)mul(435,422)#where()mulwhere()mul(634,612),}{select(863,784){[do()who()}*+mul(842,759),#what());[}why(616,35)%mul(631,814);where()/)mul(768,481)>{!)>who()who()select()how()mul(432,507)&)!>{%>(mul:$?(?~@ }mul(60,211)what()what()*what()when()+];mul(960,9)- ~'mul(678]+&!mul(252,399)what()?:?} !@>[mul(510,368)mul(674,905)how()/why()^mul(763,579)mul(771,675)mul(565,944)'who(345,580)#<where(248,141)from()don't()when()who()#from()>~<mul(708,226)$select(856,127),[mul(669,13)mul(228,509)} why()mul(665,556)<]$:])@^<when()mul(820,340) mul(430,345)from()who()<why()#>!who()mul(349,192)[mul(673@#+/mul(623,920)&^where()}#who()mul(331from()$'+from()mul(906,455)select()mul(969,326)where()[$(how()[/;/-mul(342,396)>how()[*mul(319,806)~#mul(374,571)who()mul(767,564)%:-[-;@)mul(724,513)%{[$~mul(559,103)mul(495,144)who()<<why()who();)~mul(966,554)+[]select()>mul(485,851)(mul(935,69)from()mul(745,465)select();/^mul(788,539)}:/+from()select()^/~mul(385,82)mul(939,676)#!%how(){who()?mul(481,330)+[ mul(542,441)%when()!^?select()when()select()$-mul(385,342)?who()how(),who()mul(394,223)@<$@-%%&:#mul(197,885){select()when()+)when():select()[mul(753,360)why()(>;!(mul(91,833*$#mul(979,895)where()@>mul(372,24)%*mul(189,679)mul(97,308)who()>mul(657,601)->*; #&)-mul(906,401) from()(what()mul(808,51)[<{when()mul(723,974)!'@)$^who():mul(947,448)mul(440,545)'<?mul(172,802)where()mul(716,119);when())do()])where()(#where()>who()]mul(319,32)<#select(232,786)select(91,643)what()where()mul(728,960){do())^ })mul(525,770))who(),;why() #&{why()mul(695,142)@]+ )[$&*mul(558,127)how()why(),<,&how()^>!mul(126,171):)}]&don't()^'how()+*^where()where()@mul(331,359) */do()what()):why();where()>mul(715,122)when()(when()from();,)}^$don't()/where()/^mul(242,204)how()mul(910when()what()[,]/&don't()-!how()who()who();from()}where()mul(353,405)where()from()what()who()mul(562,824)mul(333,11)mul(842,629)#}+$^mul(778,805)>mul(806,747)when()!^mul(741,908)why()where()mul(110,482)>&$?mul(579,772)@}select()-mul(636,907)(mul(526,945)-(from()(*what()how():mul(166,764)?'?#mul(246how()#{mul(476,49)*:who()who():,what()-+mul(477,38)&?{;>/mul(544,656),select()*what();what(394,396)[ ?&mul(514,32){^select()@select():#]%mul(964,815)mul(562,410);when();*mul(944,789)~/^$~$-mul(750,209)* ;;how()mul(487,591);?<mul(230,18)mul(380,386),-{,@select()^mul(949,615)!how(900,63)what()+mul(557,379)]@when()] :*(:~mul(423,189)where();:when()}{[ [*mul(844,661)mul(631,480)$mul(484,570)mul(761,125~#)*@~mul(286,807)mul(715,248)&<*,'{)mul(513,214)-what(531,549)*@$where()$#) mul(420,876)*what()!mul(177,619)select()< mul(819,380)?how(): <:';mul(263,636)
|
||||||
|
[}[%*:mul(763,577)}<<[],@mul(416,291)}<{how()[who()):@mul(80,21)mul(147,560)who()@',what()mul(9,445)]!mul(797,562)%[$-who()mul(128,286)from(){;:mul(331,938)*why()'-[what()mul(159,223)-*where()<who(619,345)-,mul(684,152)who()mul(433,596){mul(793,372)<from(54,483)[select()[where(629,864)mul(935,16)mul(204,768)!mul(864,108)from()don't() }$mul(147,548)^mul(827,996)mul(420,422)how()what()mul(61,127)@&<'^+^>mul(245,365)[[!@),{@mul(651,974)} /<mul(333,723)+mul(198,582)mul(631,8)what(),what()]!who()how()what()<mul(21,630)where()&]~:[mul(358,326)from()+from()mul(372,505)-:do()#?what()where()mul(351,931)>]%why()&mul(809,5~*/&&why()>mul(571,244)where()#why()}what()mul(518,122)+mul(579,300)'/select(898,768)>%][$(don't(){[mul(361,809)>[>&];why()why();mul(294,704)mul(331,74)}mul(694,47)]/-mul(399,272)when()mul(104,924)when()what(347,469)>from()~^mul(642,304)when()<what(){>?why()?mul(429,733)select()#&(}&mul(125,283)select()][who():[ mul(136,666)? when()where()%what()>/how()mul(570,389):]~who()+@!}mul(713,887)?{}select()'mul(98,67)&when()do()when()>mul(536,7)*when()) !'mul(884,110)@#')mul(201,681)from()^,do()'why()#]<why()'(;+mul(593,332)]mul(180,819)/@mul(902,212)-mul(90,446)~];select()why(100,859)!don't()-'mul(893,69),}][from()don't()+(~why())mul(86,991)mul(590,379)how()mul(405,424)?:#>from()! don't()when()how()mul(420,456)%?,'mul(385?select()mul(916,632)]mul)mul(908,719)$*@ <when() <$where()mul(539,350)(+why()# +select()select()mul(405,412)'!>({/{^<when(442,660)mul(143,163) who()why()mul(140,644)mul(250,287))mul#'-when()select()how()+/$mul(822,187)mul(888,819)!<select(908,31)[$/mul(212,723)who()&]mul(372,211)mul(854,457)&;where()??}-+/mul(198,967)from()mul(669,611):what(364,527)*);[select()^)/mul(62,603)-+@mul(215,373))mul(765,970)mul(218,4)^] mul(482,465)how()$^,];from()'mul(677,699)#mul(856,173)#mul(816,115)!mul(647,891)from();<[!select()-how()mul(726,735)who(),#who()how()mul(44,988@++!~mul(298,848): /]where()^where()why()who()mul(2,969)mulwhen(779,246)where(){when()how()>how()<mul(595,699)when(){why()from()mul(270,688)^select()*!~'<}-mul(324,127)(select()-mul(354,982)]+from()&#>?!mul(980,215)>what()where()@?why()-?mul(614,656)mul(220,163)?why()how()mul(355,585)%;mul(419,411)mul(184,742)$what()>;don't()],'$(select()mul(736}when(),mul(626,880)who()*<how();*]%(mul(676,2))+%who() how()-%+<mul(366?((how()>,;mul(765,856)<<>why()mul(553,221)^!>$who();mul(813,625)>]* how()do()]<;$<@where()select(774,55);!mul(496,557)#<>,!>)what()mul(222,55)from()who()]',what()/;where()where()mul(136,746)>(don't()]mul(970,908)select()^@)'%mul(237,672):+<@<%%-}mul(498,420)who(839,971)&select()mul(937,73)$&&from()do()mul(996,665)&where()where()%,#mul(143,849)?from(913,546)*{?([&mul(134,708)why()[,'how(166,502)select()#&mul[-mul(205,222)}select()]}( why()@(+mul(898,124?*how()@select()mul(616,898)where(705,139)]@mul(155,570)who() -$,{&mul(89,802)!+who()$do()&~]%>?{ >mul(676,57)< <from()!((*&mul(91,478)]mul(105,40)when()]'how(669,25)mul(346,548)]]]'when()>mul(738,600):mul(918,629)['when()~where()from()!;:>mul(161,824)what())from()mul(600,436)~{]what()select()!+&%/mul(996,979)}}who()] $+$mul(206,328)$^)@@/,when()}%mul(130,592)when()select()%mul(50,834)';*@when()mul(73,823)mul(865,121)
|
||||||
|
,^:mul(71,583)mul(316,791)from()when(){&->why()mul(495,908)@}*where(),how()%mul(645,82how(830,734)who()[mul(398,188)(%where()&do(){)from()from()who()mul(221,419)<:]$^'^)from()mul)mul(693,760)#how()>^why()why()[,'why(370,828)mul(516,571)where(425,351)<,>)mul(661,792{))$~-what())who()#[mul(325,165)[$where()%^*]who()+/mul(346,3)do()-@when() when()>+#*mul(698~ mul(248,163)/~]#{from()*mul(57,514)mul(871,508)[mul(498,284)from()who()select()when(277,99)*select()*mul(840,612)%mul(897,30)#</}^(do()<+select()@where()$when();#-mul(405,945)#why(433,827)>/mul(346,138)select()how()?)mul(354,691)?]what()don't();?;when(244,299)who();when()>mul(224,179)%]mul(50,319):mul(34,718)when()^:+where()from()'from()}mul(943,652)+/why()*why()#%don't() when()#'>+*>mul(231,697%how(175,144)mul(507,740)+~where() :from()mul(755,156)/%$)*+(who(212,81)>mul(927,385)#()do()mul(80,489):*,select()%&%where() mul(911,455who()}mul(651,799)~-why()+*mul(202,247);+%^:<mul(854,23){@#mul(961,171)where()!-mul(128,126)%%~#what()@mul(473,221)$do(){ !,&from(188,13)&!:where()mul(153,592)%select(112,432)where()mul(639,252)%]}$do()mul(504,573)how()mul(150,892)?who()+-why()%[}where()mul(602,833))-mul(53,697)%where(); /<where()$<mul(270,818)?how()}mul(185,555)/>mul(940,746),#from()when()mulwho()mul(701,602)mul(183,908)how()mul(12,827)][})how(){~when()$mul(332,704)^)when()when()mul(936,771)#where()/who()who();from()$# do()%where(){^ mul(953,541)mul(207,683),how()~%mul(336,694)why()>@<do()mul(783,475)~@mul(500,657)> *!?[from()@mul(924,686)*)%! / )why()[mul(493,198)when()>;<$how()$(]>do()(?~(!&^select()%mul(355,72)}how()~why()why()what()~'mul(936,935)&{what(803,472)from()]<who()@who()mul(17,105)where()^select()^&[<mul(869,268)what(){mul(135,402) {where()mul(732,550)where()don't()@~mul(240,194)why()~#how()mul(412,850)!$>@ ,do()@why()*why()[mul(149,595)}]mul(867,291)~&)'%<mul(330,855)(<how()%mul(712,568)(why()@when()where()~mul(913,542)$/ mul(370,272)]from()>@where()>from(455,831)%mul(646,518)% mul(522,755)];'who()from()select();what()'%mul(555,59)(how()'?[!@do():@{mul(729,27)when()]'*,/,why()where()mul(949,316)how()^who(84,611)[?:#mul(931,532)<% [where()select()@%%mul(383,846)$why()~{/+(@mul(325,437)who()>],select()#;when()%mul(601,128)<!mul(783,128)who()#select(532,884)how()]mul(928,854)<^where()/:what()(where(831,396)select()?mul(743,757)$}!{)%mul(723,274),!^{'(mul(125,779)+mul(104,510)mul(878,917)( where(389,343)%-)]mul(838,207)(^#$/</&mul(967,47)from()@{%?how()who()why()select():mul(590,941)~why()where()![-(mul(973,686)<!(,#{(/mul(787,692)~+mul(629,517)+why()-(>?mul(10,499)%mul(704,145) >mul(811,825);*{mul(539,875)mul(920,111)mul(509,272)mul(657,901)>mul(464,17)why()what()!why()*])}!mul(736,189)mul(299,45)when()select(169,279)><>[,mul(532,593){mul(627,971)how()who()how()where(291,392)/[): do()!mul(770,718)$&;!what()]?#^%mul(938,624)what():<#how()@!~mul(279,222)from()^++);:?why()$mul(98,818)$(]#{%-mul(891,49)+who(251,742)> what()where()<(mul(526,69)}%when()]/(~#do()select()**+^-from()mul(119,943)what()?from()when()*}<what()<]mul(577,966)select(){select()*['>( don't()mul(370,463)!why()>who()mul(326,383)!~how(59,628)!; %do()mul(671,969)!mul(747,375)mul(257,559)!?#!/<how(315,722)(mul(529,781)<'[%?$mul(118,474)mul(866,674)%mul(99,500)?[who()do()who(394,637)^(+ [#(?{mul(555,282){-[*@!'select()where()don't()*{what();why()&>*mul(353,892)select()why()(mul(648,3)how()don't()<~{mul(771,164)mul(576,453)$why()}-@'mul(967,581)* %{:when()where(){*<
|
140
y2024/resources/4_input.txt
Normal file
140
y2024/resources/4_input.txt
Normal file
@ -0,0 +1,140 @@
|
|||||||
|
MMSMXMSASXMXAXMAXSASXXXMASAMXSMMMXMMXMXMASMXMASMSMXSSXMASXSMMSASMSAXAMXMAMMMSAMXXXMAMSMXMMMXMASXMAXXMMMXMMSAMXAMMSMSSMSMMMSMMXSXXAXMXSAXMASX
|
||||||
|
XAXMASMXMASASXSXAMAMXMXMAXAMXSASAMXMAMAMSAMSSXMMAXASXAMAMSMAXMXMASMSASASASAAMAMXSMSMSAXAAXXAMSSMXMXSMAMXXAXAXXASXAMAAXAAXXMAXAXXMMSSMSSXSASA
|
||||||
|
XMASXXXASAMAMASMMMAMMSASXSXMASAMMAXSAXXXMASXMASMSMMMMXMAXAXXMSAMXMAAXSASASMXSAMAAAAXSASMMMMMSAXMASAMSAMSMMSAMSAMAMMXSMSXMASXMASAASAAXMAMMAMM
|
||||||
|
SSMSMSSXMMMAMSMAXMAXXMAMMAMSXMSMMMXMAMSXSSMXSAMXXAASXMSMSMSMMSXSAMMMMMAMXMXAMASXMSMMMXMAAAXMMMSMAMAMMMMAAXMAMSAMXXXMAMAASXMAAXXMXMSMMMSMMAMX
|
||||||
|
XXAXAAAMMSSMMXASXSMSSMAMSAMXAXXXASMMSMSASAMXMASMSXMXAAXXAAAAASASAMAXSMSMSSMSSMAAXAXAMXMMMSXXAXAMSSSMMSSMSMSAMSMMSMXMMXSMSASXSXMMSMAMAAMAMASX
|
||||||
|
MMMMSMMAAAAMASXMAAXAAMSMXAMSAMXSMXAAAAMMMAMASMMMASXSMMSSSSSSMMMMMSAMSXASAAAAAMMXSXSMXSSXSAXAMMMSMAXAAXAMXAASAMXMXAMXMAMXSAMMMXXAAMXMMXSAMAAX
|
||||||
|
XAAAXAXMMSSMASAMXMMSSMMASMMSASXMXAXMMMMAMMSAMAAMAMXAXMMAXAMAMXSAMMMMMMMMSSMSMMXMAMMMAMXMMAAXMASAMXMMMSAMSSMXMASMASMAMXSAMXMAAMMMMSSXSASASXMS
|
||||||
|
SSSSSSMMAMXMASXMAMXXXAMAMMASXMASMSMSAMXSSXMASXMMSSSMMAMMMSMMSSMASAAXAAAAXXAMXSASMXMMXSAXMSMMSMSASXSSMMAMAXXXXAXSAMXXSAMASASMSSSXSAMAMXSXMAXS
|
||||||
|
MAMMMAAMSSSMASXSSSSMMMMAMMAMASAMAAASXMAMMMMMXMASXAAXMXMXAMAXSAMAMXSSSSMSAMXMASASXMMAMSAMXXXAAAMAMXMAMSSSMMMXMSXMMSXXMASAMMXAXAAXMAMASAMASMMS
|
||||||
|
MAMMSSMMAAXMXSAMMAAXAAXMMMXSASAMMMXMSMMSAAXXAMXSMXMMMASMSSSMSAMXSXXMAXAXXMAMXMAMXAMAXMASXMMSMSMSMMSMMAAMXMMAXMASAMXXMAXAMXMXMMMMSXSAMASAMXAX
|
||||||
|
SMSXAMMSMSMSAMAMMSMMSMMAAAXXASXMAXSAMXAMXMSXSAMMMSAXSASAAAAASMMASMMMMMXMXSSMSAXXMSSMXMAMAMXAAAAASAMXMMSMSXMASMMMXASMMMSAMSSMSSSXSAMXSAMASMSS
|
||||||
|
SXMMXXAXXMAXXMAMXAXAAMSSMSXMMMAXMSMSMMMMSXXMAAMAAMMXMASMMSMMXASAMAASAMXSAAMAMAMSAMXMAMSSSMMSSMXMAMMXAXMASXSAXAAMSAMXAAMAMXAAAAAMMAMAMMSMMAMS
|
||||||
|
SAXMXMMSMMSMMSMSSMXMSAMXAMXSMMSMMAMAMMMASAMMSMMMXXSASXXXMXXMXMMASMMXAMAMMSMMMAMAAMAMASAAAAAMXMXSMMSSMMMSMMMMSSMXXAXMMXXAMSMMMSMASXMMSMAXMMMM
|
||||||
|
SXMMAMMAXMAXAAXMASAMXAMSASAXAAMMSMSASAMXSAMXXXXMAASXXMXMXAXXAXSXMAXMSMSMMXMXSASXMSSSMSMSMMMSAMXSAMAAAXMAXXAAMXMASMXMASXMMXAMXXXXASXMAMXMXXXX
|
||||||
|
XMASXSSMSSXSSMXSAMMSXSXSAMAMMMSAAASASXSMSAMXSMAMMXMMSXSAMSMSSXSXSXMAXMXAAXSAXAMAXAXAXXXMASAMAMASAMXSMMSMSSMSSMSAMMASAMASXXXAMXXMAAXSAMXMSMMM
|
||||||
|
MSXSAAXAAAXXXXAMXMXMAMAMXMXXAAMMMMMAMAXAMAMAXMMXSAXSAAXSAXMAMMXAMSSXMASMMMMASAMSMMSSMMMSXMASAMXXAMXMXMSAMXAAXXMAXSAMAMAMXSSSMSXMXMMMXSAAAAAS
|
||||||
|
ASAMMMMMMSMMAMXXMMAMAMAMXSMSMXXAXAMMMSMASMMSXSMASXXMMSMMMMSSSSMMMAMMMAMAMSSMAXXXAAAAAMAMASMMMMSSMMXMASXMSMMMSMSMMMMSAMSSMMAMAAMMMXMAAMMSMSMS
|
||||||
|
MMAMXXAAXAAMMMSAMSASASAXAXAAMXSSSMSXAXMAMMAXAAMMMMXAAMXXMASAAASXAASAMXXAMAAMASMMMMSXXMASMMXASAMAAAAMSMAXXAAAAMAMMMMMXSXAMMAMSMSAAXMMMSAMAMXX
|
||||||
|
MSSMXSSMSSMMAAXAXSXSMSXSMMSMMAMXAXMMMXMAXMAMSMXSAMSMMSASMSSMSMMMSSMXMMMSMSSMAXMAAMXMSMMSMASAMASXMXMSASXMSSMSMSASAAMMMMMMMMXMAASMSMXXAMXSAXMX
|
||||||
|
XAAXAMAXAAMSMSSMMMMSAMMAMMMMMAMSAMXAXXSMSMSMXXAMMXAAAXAMMMMMMAMAXAAASASAAMXMASASXSAXMASMMAMXSMMXSAMAXMMMMXMAASASXMMAASASXSMSMXMAMXSMSSMMMMSM
|
||||||
|
MMMMMSAMSSMXMAAASAAMAMSAMAAMSSMMASXXMAAAAXXAMMMXSMSXMMXMXAAAMAMXMSMMSSSMSMMMASMXAMMMXMMAMXXXXASASASAMXXSAMXMMMAMAMSSMSASAAAAMAMAMXSAMXAXAXXA
|
||||||
|
SXSAMXMMXXAAMXXMMMMXXMMASMMMAAAXAMAASMMMMMXAXAMAMXXASXXXMXSSMMXSAMXXXXMXMXAMXSXMMSMSAMMXMASMSAMMSMMMMMMMASMXSMSMSMAMAMXMMMSMMAXAXXMMMSSMSXSM
|
||||||
|
AAMSMASXAMSSSSXSXXSSSSSXMAMMSMMMMMSMMAAXXASXMMMASXSAMAMSMXMXAAAMSMSSSMMASXSMASAMXAASASXMXAAMMXMASAAAAAXMSMMAAAAAAMSMXMSXMMMMSMSMMMXMASXAMASM
|
||||||
|
MMMXMXSMXMAAAMASXMXAAAMSMXMXMXSAXMAXXXMMMMXMAMSAMXMAMAMAASASMMMMXMAXMASASMAMAMAMMMXMXSASMXMXMSMASXSMSXSXXAMXMMMMMSXMASMMMAAXXMAMAMAMXSMSMAMX
|
||||||
|
SXMASMXAAMSSSMAMAAMMMMSAMAMMSASXSMSSSMAAXSAMAMMASXSSSMAMMMAMXSAMAMASXXMAXMAMMSSMSXXMAXXXAASAMXMAMXMAMAMXSAMMSXASMXMMSAMXSMSMMSSSMSASAXAAMAMA
|
||||||
|
AAXASASXMMAAAMSSXXSXSXSAMMMAMXSXXMAAAAXSXXAMXMXAMXXMAMXXXSAMXSASMXSMAXMSSSMMMAMXSXAMSXMMSMSASMSSMMMXMAMASAMAXMMMSASXMASAMXAAXXXAASAMMSXSXSSS
|
||||||
|
SSMAMASAMXMSMMXMXMXAAASMMSMSSXMASMMSMSSMMSMMASMXSSSSMMSXMSAXASAMXXMASXXAXAAXMAMMMSMAMXSAMXSAMXAAAAXMSXMAMAMSXSXAMMMXMAXAMSSMMAMMMMXAXMAMAMAA
|
||||||
|
AMMSMAMXMMMAMXAMAAXAMXMAAXAAAASMASAMAXAXAAAXAXMMMXAMAAAXMXXMXSXSMXMAMXMMSMMMSAXAAXMAXMMASAMAMMXXMMXASMMMSMMMASMMSASAMXSXMAAAMXMAXXMXXMAMAMSM
|
||||||
|
MXAMMSMMAXSAMSASMSAAXXSMMXMMSMMXMMMSXMAMSMSMMMXAMXMMMMSSMAMSAMXXASMAMXAXXAMAXMSXMXMMSAMXMXMAXMMSMSXSXASAAMAMMMAXSASASAMAMSSMMASMSSMMSMXMAMXX
|
||||||
|
XMASXMAXAAMAMSAXAMMMMMSASAMXXMXAXAAMAMAMXAXMSMSSSMSAASAAMAMAAXAXAXAASXMMSAMSSMSAMSAMMMMAMMSXMSMAASXMSMMSSMXSMMSMMXMXMASAMMAASXSAAXXAAAXMSMSM
|
||||||
|
AAMMMXAMXSMSMMAMMMAMAASAMXMSMSSXSMSSXSASXMMAMAAAAAXMSMMSSSSMSAMSXXXMSAMXMAXXAASAASMSASMAAXXXSASMSMMMAXMMMAMXMAAAMSMMSXSMSSSMMAMMMSMSSSMAAAAA
|
||||||
|
SMSASMMMMMMXAXXMAMAXSAMXMAXXAMXXSMMAASASMXMXMMMSMXMXXAAAXAAAMXMAMSSMXASXSMMSMMMAXMASASMSMMXXSMXXAMXSAXSAMXMAMSXSAAAXXAXAAAASMMMAXAAAAAMSMMMS
|
||||||
|
MAMAXXAAAAMSAMXMSXXXXAMXSXMMAMSMSASMMMMMAMMMMAXAXMSMXMMSMMMMMMMASAAMXMXMASAXAAXXMMAMXSXMAMSAMXSAMXMMMXMSSMSXXAMXMSSMMMMMMSMMMMSXSXSMSMMMSMAX
|
||||||
|
MXMMMSSSSSXXAMXMAASASAMXMAXSAMAAXAMXXAMAMXAAXMSMXMAAASAMXSXAXAXSMMSMASMSMMSXSMSXMSXMMSASAMMMMAXMMXMAMAMXMMXXXXXMAXAAASXMXAMXAASAMXMAMXAAAMXS
|
||||||
|
SSSSMAXMAXXSMMXMSSMAMMSAXAMSASMSMAMMSMMSMSSSXMSXSSMSMXAMXSSMXXXAAXMXAXAXMAMMMSMAMSAMAMAMMMAXMMSMMMSASMSAMMSMSMMXSXSSMSASMMSSMMSAMXXAMSMSXSAS
|
||||||
|
AAAXMMSMAMXMMAMXMAMXMASMMMXSAMAXMSXXAAAXAXAMXAMAMXMXMMAMAXAMASXMMMMMSSSXMASMMAXAMXAMSSXSXSXSAAXAAXXXAXSASAAMAAMAMXXAASAMAAAAXASAMXSSXXXMAMAS
|
||||||
|
MMMMAAAMMXXAASMSSMMXMAXXAXMMXMXMMAAMMMMSMMAMMMMSSMXAASXMMXXMAMAXAAAMAAASMAXAMSXXXMAMAMMSAAMSMMSMMSMMMXSAMXMMMMMAXXXMMMSMMMMSMXMMMXXMAMMMXMAM
|
||||||
|
MAAXMSMSAMXSXMAAAASXMSSSSSSMSMMAMMMMAAMXXMAMAXAAAAMSMSAAMMSMMSSXSSSSMAMMMAMSMXAASXSMSXAMMMXXAXXMXXAAXAMXMXSSSSSSSMSAXMASXSXMMSMXSSMSAASMSMAM
|
||||||
|
SSXSAXAMXSMMAMSMMXSASAAXMAMAAAMXMAASXSSMMSMXSMMSSMAXAMXMMAAAMAXAAXMAXMXXXSXMAMAMXAMAMAXXXXMSSMSAXSSSMMSASXAXAAAASAAXMASAMXAMAAXMXAAMSXMAMXAM
|
||||||
|
MAAMXMAMAMAMSMAXXAMMMMMMMSMXSSMAMSXSAAXAMAMAMXMXMAXMXMAMMSSSMASMMMSXMMSMMMAMXMMXMMMAMMMSMMAMAAAMMMAXAASAXMMMMMMMMSMMMMMAMMMMXMMAMMMMMMMAMXSS
|
||||||
|
MMMMXMAMASMMMSXSMMXAXXXAAXMAXAMMXMAMMMSSMXMAXAXMASMSMMAMAXMAMXSAAXXASAAAAMAMAMMMAASXMXAXAMSMMSMXMMSMSMMMSMXAXMASAXXSAAXAMAASASXSMSAMXASAMMAA
|
||||||
|
XXAXASXSXSAAMAMMAMSMSMSMSMMMSAMXAMXXXMAMAXMMSAMMSAXAASMSXSSXMASMMMSAMXSSMSAXAXAMXMMASMSSSMAAXAMAXMMAMXXAAMASAMXMASASXXMXMXXSAMAXASMSXMSASMSM
|
||||||
|
ASMSASASASMMSMMSAMAMAMAMMASMMMMXSMMSMMASMMMAAAMXXAMMMMAAAXMSMASAMAXASAMXXSAMXSMSAMSAMMAAASMSSMSSSXMAMMSSMSAXMAXSAMXMASMMSSMMXMXMXSAMXXXAAAAX
|
||||||
|
AAAMAMAMAMXMAXAXAMXSASMXSAMAAAXSMAMMASAMAASAMXMXSXMAAMMMMMAXMASAMXXAMMSSMMXMXAAXAMMXXMASXMMAAXAXMAMASAMXXMXMAAXASMXMAXAAAAXAMXXMMMAMASAMMSMX
|
||||||
|
SSXSAMAMAAAAXMMMSMASASAAMXSMMMMMXAMSMMXSAMXMSMMAMASXSXSAXMMMMMXXMMMSXAXAAAAXMMMMSXMMSSXMAMMMMMMXSAMXMASMXSMSMSXSXSXMMSMSMMMMSMAXAXAMSMAXAXXS
|
||||||
|
XMAXMSSSMSSMSASAAMXMMMMMSMXXAXAMSMXXXXXAMMAAAAMMSAMXMAMAMMAAMMMSSMAMMMSSMMXSASXAMAAAAMASXXSMSSXASAMMSAMXAAXAAXXXAMXMAAXAXAAXAMMMMSASAXMMMXXA
|
||||||
|
SMSMXAMAAXAAXAMMSMAAXASXSAMSMSMMAMXMMMMXMSXSSMMXMAMAMAMAAXSMXAMSAMASAXMAXAXSAMMMXSMMXSAAAASAMXMASAMMAMXMAMSMSMAMSMAMSSSSSSSSMSAAMMMSASXASXSM
|
||||||
|
XAXAMXSMMMMSMXMAXAXMSMSMSAMXMAXXMMAXAAMXXMAXAASXSMSXSASMSMXMSAXMAMXSAMXMMMXMAMXSAMXSMMMSMMMMMAMMMMMSAMMXSAMXMMMMAXXMXXXAAMAMXSXMXAMXMAMASAAX
|
||||||
|
MSMAMAAAAAXMAMXMXAXMAMXAMMMXMXSMASAMSSMXMMXMSMMAAAAXMASAAXAXSMMSMMMSAMMSAMXSXMAMAXAAAAXAMMXSSMMSAMXSAMAAMAAAXAXSSSMSMMMMMMAMMMMMSXSAXMAXMXMM
|
||||||
|
MAMAMMSSSSSXSSXMMSXSSSMSMMSXSAAMAMMXMAXMXXSAMXMMMMMXMXMXMMMMXSAAAAAXAMXMASAMXMXSAMXSSMSMSMAAAXMXSAAMAMMSSXMXSAMMAAAAAXMASXXSAAAMXMSASXSMSASX
|
||||||
|
SMSXSMMMMAMMMMAMAMMMASAMXXAAXSSMSASMSAMMMMMMMMSAXSMXXASASMXAXMSMSMSMMSSSMMXXAXAMASXAAAAXXMMXAMMMXMMSAXAMAMXXXXSSMMSSMMAMAXASXMXSXAXAXAMASASA
|
||||||
|
SAAXXXAAMAMAAMXMXSAMMMMMAMMSMXXAMAAAMXMAAXAXMASAXSAXSAXASAMXSXXMAAAAXAMAMAMXMXMSAMMSMMMMSXSSSXXAXAAMMMMMSAAXAMAAXXXAMSAMXMAMXMASMSMMMAMMMMMM
|
||||||
|
MSMXMSSXSASMSMSAAMMSXSASMAAAMXMXMXMXMASXSSMSMAMSAMAMMSMMMMMXMASXMMMSMASMMASASAMXAXAMXMAXAAAAAASMMMMSMAMAMSMMMMSAMXXMMXXSASASAMMSAAASXSMSAMSM
|
||||||
|
MAXAMXXMSXSAAAXMMMAMASAAXMXSMAMSMMXSXMAMMAMXMXSAXMMMAAXMAMMAMXMXMXAMMAMXSXSAMAXSXMXMASMSMXMMMMMAAMMAXAXAMASAXXMAMMSSXSASASAMXSAMXMSMAAASAMAM
|
||||||
|
SASXSASMXAMXMMSASAMXAMMMSMAMXAXAAAAAAMMSSMMASXAMXXSMMMMSSMSASAMXSMMXMXMAMXSMSSMSXMAMXMAAXAMASXSSMMSSSSSXSAMSAMXSMAAAAMAMMMMMXXXSXXMMSMMMMSXM
|
||||||
|
MAMXMMSAMXXXXXAAMXXMAMAAMXAMSMSSSMSSXMXMAXSASMAXSAXASXAAAMSASMMXSAMSXMMSSMMAAXMXASAXSMSMSXSASXMAMAXMAAXMMMMMXMAMMMMSMMMMXAASMSMMMMMAAAXSASXS
|
||||||
|
MAMXMASAMXMXAAMMMXMAMSMSSMMMAAAXAXAMXMXMXMMASASXMASAMMMMSAMMMXAAMAMAAXAAAMMMMSMSMMMSMAMAMXMMSAMXMAMMSMSMMAAXMXSMSAMXMASMMMXAAXMAAAMSSSMMXSAA
|
||||||
|
SMMMXASXMXSXMXMAXAAAAAAXAAXSMMMSMMSSSMXSAXMAMXXXSAMAMSMAXMXSAXMXSAMSSMASXMXSAXAAMAMAMAMAMAMASMMSMSXAAMAAMXXMSAMXSAMXSASAMSSMSMSMSSXMMXASXMMM
|
||||||
|
XMASMMSAMXXMMAAXMASXSMSMMSXMAMMAMXMAXMAMMMMMSXSAMXSAMMMMXXAMMMMASAXAMMXMAMMSAMSXSASASMSMXAMAMXXAAMMMMSSSMSSXMASASAMAMXMAMXAAXAXMAXAAASMMXAMS
|
||||||
|
MSASAXMAMXMAMASMSMAAAAAXAMASMMSASMMMMMAXAAMXMAMXMASASMASAMXSSXMASXMASXXSXMXMAMAAXAXAMAAXXXMMSXMMMMAXXXMAAAAXSAMAMAMSSMSAMXMMMMXMAXXMMSXSMMMM
|
||||||
|
AMASXMSSMAMSXXXAAXMMMXMMXSAMAAMAMXMXAMMMSMSAMAXAMXSAMXAMAASAMXSASAASAMXSMMASAMMSMMMSMMMSXXAXAXSAMXSMMXXXMMSMSMMSMSSMAASMMMSAAMSSMSSSMSMMASMM
|
||||||
|
MMMMAMAMXMAMAMMSMMXSMMXXMMMSMMMSMMMSSMSAMASXMMXMSAMAMMMXMMMXSAMAXXMMSMAMAXXMAXAAMAAAAAXAASXMSXSASAXASXMMMXXAXSAAMXAMMMMAAASMSMAASXAAXMAMAMAX
|
||||||
|
XSASAMASAXMMAMAAASAMAXMSSXMAMAMAAAXMAAMAMMMSAAASMMSAMXMASAMSMMSAMSSMAMASXSXSXMSSSXSSXMMXXSAAMASMMASAMMMASAMXAMSSMSAMSSSMMMXAAMXXMMSMMSSMSSSM
|
||||||
|
ASASMXASAXMAAXSMMMMSSMAAAASMSMSSSMSMXMMSMSASMSMSAXMASAMASASXAAMAXMASAMXSAAAAAXMAXAAMMSXMMMMAMAMAMAMAMMSASXSMAXAMMSAMMASXMAMSMSSMMAAAAAAAAAXA
|
||||||
|
XMMMXMASASASMXMMSAMAMMMMSXMMMMAXAMMMMMXXAMAXMMASMMXXMXMASXMMMMSXMSMMSMAMMMMSSMMAMSMMASMMASXSMSSXMXXXMXMASAXMMMMMASAMMAMXMAXAAAASASMSMSMMMSMS
|
||||||
|
XMXAAMXMAXMAXXAASXMASXMXXMXAAMSSXMAAAMXMXMMMSMAMAMXSMXMASAMXXAAAXXXAAMXSXXXXXMAMAXAMXSASXMAMXMAMXXMASMMXMAMAAAXMAMAMMSSMSMSMSMAMMXAAAXMAXAAX
|
||||||
|
MSMMMMMMXMXMSMMMSMMXSXMAMAXSSMXXXSXXXSMSASAAXMMMXMAMAAMMSXMMMMMMMAMSMSXMMSMSMMSSSSXMASMMMMSMMMAMAXSAMAMMMMSSSSSMASAMAMSAAAXMAXXAXMMMMSSMSMSM
|
||||||
|
AAAMASMMAMXXXAAAMAMXMMMMSSMMMMSXMAXSAAASAMMSSXMMXMASMSSMSMMXXMASXMMMXMAAAXMMAMAAMMAMAMAMAXMAMMAMMMMAMAMAAMAMXAAMXAMMAMMXMXMSMSSMXSXAMXMXAAAM
|
||||||
|
MAXSASAXAXMXSSMSSSXAXAAXAMSXMASAXAAMXMMMSMSAMAASXSASXMAXMAMMMMAMAAAXASXMSSMSSMMSMSAMAMAMSMSAMMMASXMASMSSXSAXMXMMXMASMSMSSXMAMXAXAXMXSAMMMMMS
|
||||||
|
ASAMMSXSMMSAAMXMAXMASXMSAMXSMAMAMMSMMSAMXMXAMMMMAMASMSMMXSMAAMASXMMSXMMSMMAAMMMMMXMSMSSMMASXMASASASAXMAMAXXMASMXMXAMAAAAXXSASMMMSSMMMASAAAXX
|
||||||
|
AMAMXXXMAAXMXMAMXMXMAMXSAMXSMMXAXXAAAAXXAAMXMASMSMXMMAXAAXSSSMASAAAXXSXSAMMMSMSMAAMXMAMAMAMAXAAASAMXSMSMSMAXMASASMMMSMMMSMMXSAXAAAXAMAMMSXSM
|
||||||
|
XSSMMAXMMMSMMSAMSAMXXMASAMXMAMASMSMSMMMSASAMXMXAXMSMSASMXMAXXMAMXMMSASASXMASXAAMSMSXMASXMMSSMSMXMXMXMMAAMSAMXXSMMAMXAAAXSAMASMMMSSSSSMSAMAAM
|
||||||
|
MAXAXXMASXXXASXSAMASXMXXAMXMAMMXAXMAAAASXXAAMXMAMAAMXAXAAMSMMSMSMSAXAMMMASMMMSMMMAXAMAAAMAAAAMXSAMSMSAMMMMXMAMMXMAXSMSSXSAMXMXXMAMXXAAMAMSMM
|
||||||
|
XMSMMMSAMXAMMSMAASXSMSMSSSXSASXMASXSSMXMASMMSAMAMSMSXMMSXSAAMAAAAAXMXMASASAAAXMASMMXMMSMMSXMMMAMXMAASMSAAXSSMXSASXXXXAXMXAMAMSSMSSSSMMMAMAXX
|
||||||
|
MXAXXXAMMMXMASMXMMAXAAAXAAAXASXMASAMXMAMAMXAMXMXXXMAMMAXMXMSSMSMMMMMSSMMASAMASMMMMXXXXAAXXAMMMMSMSMMMAMXSXMAAXSASMMSMSASXSMSMAAMAAMMAAMSSMMS
|
||||||
|
SSMXMSASASASMSAXSMSMSMSMMMMMMMMMXSXMASXMSSMSMSASMMMSMSASAMXXXAMXMAXXAAXMMMAMAXMAAMAMXSMSASAMXASAMASXMXMAMASMMMMAMXAAMAAMAXAXMAXMMSMSSMSMAMAA
|
||||||
|
XASAASAMMSASXXMMSAXMAXXXSAXAXAXMXMASXMXAXMAMAMASAASMAAXMXAMAMXMXSXXMSSMMASAMXSSSXSAMXXXMMMMMSXSAXAMXAMMMSXMAMXMMMMMSSMSMMMMMAXMXXAXMAMAMAMSM
|
||||||
|
SAAMMMAXMMAMMSXMMAMSMSMAMMSMXMSMXSAMMXMAXMXMXMAMMMMMMMMXXXAAMASXMXXMAMASXSASXAAAASMSAMXMXMSAMASAMSSSMXAASASAMMXXAASAMXAAAAAMXMMSAMSMSSSMMXXX
|
||||||
|
MMMMXSXMSMSMASMSMSMXXAMAMAXXASAXXMAMAXAMMSMMXMXSXSASXMAXSXSMSXXAMXXMASMMASXMMMAMXMASXSAMAMMASAMXMXAAAMMMSASMSXMSSSSXMMMSSSXSAMXAAMMAAAAASMMM
|
||||||
|
XMXSXXXXAAAMMSAXAMSSMSSMSXMAMSASXSSMSMSXAAASAMXMAAASMXSASAXXSASMMMMSXMXXMMAMXXMASMXMASMSAXSAMMSMMMSMXXXAMMMXAAXAMXMAMSAAAMASXSSSSMXSMSMMXAMX
|
||||||
|
MMAMMXMMMSMSXMMMSMMSMASAXMAXXMAMXAXAAAMMXSSMXSMSXMXMASMAMAMAMAMAAAAMAMXMXSAMMMSAMXMMAMMSAMMAMXAAXAMXSAMXSASMSMSAMXSAMMMMSMXMAXAXXMXMAXXMXSSS
|
||||||
|
AMASMAMSAXXXMASAXAAMMAMXMMSMMMXMAMMSMSMSMMMMAMAXMASMXXMSMMMAMMMSSMMMAMXAXSMXAAMAMSAMMSAMXXSMMSXSMXMAAXASMMAXMASAMXMSSSXMXXAMMMMMAXSMMMSAMXAM
|
||||||
|
XSAMXAASASMXMXMASMMSMXSAAMAMAAAXXMAXAMAXAMAAAMSMXAXAXAAXMASMMSAXXAASXMSSXSMSSMXAMSXXMXAXMASAAMAMXSMASXSAMXMSMXMAMSAXXAASMSXSAAAAMMMAAXMASMSM
|
||||||
|
MMMXXMXXAMXAMXMAMAMXAXSXXXAXMSMSAASMSMMMMSASMSXMMXMXMASMSMSAAMAMMMMSAAMMMSAAAMSMMMMMMSMMSASMMMAMASAMXMMMMAMXMASXMMMMMXMMAMXSMSSXSASMMSMMSAAX
|
||||||
|
SASAXSSXSMSSSXMSSSMMSMMASXMSAAAMXMXAAAXAXAAMMMAXSASXAXMAAXMMMMSSXMASMMMAAMMMXMAMMAAMMASXSAMXXMASXMXMAAAXSXSAMAMMMMSSSMXMAMXSAMAAMXMXMXMAMMMS
|
||||||
|
SAMMSXAAMAMXMASAAAMAMAXXMAAMMMMAMXMSSSMSSMSSXSMMMAAASMXSMMAMXAAMAMAMAXSMSSXAASASMMSMSASXMAMXSAMXAAXSXSXMAXSXSXSAMXAAXAASASXMAMMMMSMXAAMXSAMM
|
||||||
|
MAMXMMMMMSMASXMMSMMASXSMMXMXMXMASXMAAMMXSAAMAAXXMXMAXMMXMASMMMMSAMSSMMMAMMMSXSASAAMAMAMASXMXAAMXMMMSAMXMMXMASMSXMMMSMXMSAXMMXMAXAAASXSSMXASX
|
||||||
|
SASAMSAMXXSAMXSAMXSMMAAXAMXASXMXAMXMMAMAXMAMSMMXMASXSMMASXMASAAXAXMAAAMMMMAMASXSMMMAMAMXMAMMSMMSXMASAMXMSAMXMAMMSSMMAXMMMSASXSSMXXMAMXAXXAMX
|
||||||
|
SASAXMAMSXMXXMXASASMMMMMMASXSASMSMXMMXMASXXMAXSASMMXMASAMASAMMSMMMSAMSMSMMXSAMXXMAMMSXMAMAMAAAMAAMASAMMXAXSAMSMAAAXMSMXAAMAMAAXAASXMXSAMSSMX
|
||||||
|
MXMMMXSMSAAMSMSXMASXXAAMXXXAXAMAAXMASMMMSAASAMSMSASMSAMASXMASAXAXAXAMXMAAXAMAMMMXMSMAAXSXSSSMSAMAMAXAMAAMMSASMMMMXMMAAMXMMMMMMMSXMAXXMAMAMAM
|
||||||
|
SMMMAAMASMMMAASAMXMAXSSSXMMMMSMSMMSMMMAAMXMMMXSXSAMXMASXSASXMASXMXSSMXXSSMMSMMMSAMAMMSMXAAAAAAMXMMSSXMXAXAMXMAAAMSXSASMSXMAMAMXMASAMASMMASMA
|
||||||
|
SASMMSMAMMXMXSMMSAMXMXAXXMAXAXAXAAAAASMMSAMAMAMAMXMASMMASAMXMAMASMXMASXMAXXAAAASASMSAMAMSMMMMMMASAMXMSXMMSSMSSMXXAASAXAXXXASASMSAMXMXMXMASXS
|
||||||
|
MAMXAAMXMMAASMMXMAXMSMAMMSAMSSMMMMXSMSAASASASAMSMMSMSAMXMAMXMAXAMAXSASASXMSSMMXSXMXSXMAMAAAXXXSAMAMXXMAXSAAAXXSXMMXMAMSMMMMXXXAMMSMMAXAMXXMA
|
||||||
|
MXMAXXXAAMMXAAXSMSMAAMAMAAAMXAMSMSMAAMMMSMMMMMSMAXXXSXMAMAMXMAMSSSXMXSAMXAMMASMMXMAXXMXMSSMSMMMMSMMAMSXMMMSMMAASMSSMMXMASXSSSMXMAAMSSSXSXMAS
|
||||||
|
MSSSMASXSMSXSAMXAAAMXMAXSMXXMAMMAASMMMAAXMXMAMAMMMMXMASMSXSAMAMXAAXMAMMMMXMSAMAMXMASMSAMXMAAMSAAAAMXMASMAMAAMXMAMAAASMMSMMAAMXXMMXMAAMASXAXX
|
||||||
|
AAAAAMAXMAAMXASMSMSAASMMXXMMMAMMXMXXAMMSAMXSXSSXMAXMSAXMAAMMMAXMMMMMAMMAXSAMXXASAMXSAAASAMMMSSMSSSMASXXMASXSMMXSXSMMMAMXAMMMMMASAMMMSMAMMSMM
|
||||||
|
MMSMMXMXMMMXASMAMAXAMAMXMAAXMMMAXSMSXSAMXMAMAXMASXSAMXMMMXMXSSXSAMMSSSSMXSMSMSASAXXMAMXMASAMXXXMAMXAMSXSMSAMXMAMAMASMMMSAMXAAXMMAXAXXMASAAAX
|
||||||
|
XMXAMXXMMASXMAMXMAMAXMSXSSSMASMMSAAAAMXMAMASMSMAMSAMXMXSAXSAXMASASAAMAAMXXAAAMMXAMSASXASAMAMXMMMMMMAXXMAAMXMAMAXASAXAAAMASMSXSMSAMMXMSAMXSMM
|
||||||
|
SXSXMXMASASAMXSMMASXMMSAAAAXAMAMXMMMSMSSMSAMMAMMSXMXAMASASMAMMXMAMMSMSASMSMMSMSMAMSAMMAMASXMMAAAAMXMSMAMXMASXSMSASMXMMASAMXAASAMXXSAXMASAMMM
|
||||||
|
XXXXXMAMMASMMAAASXSAAAMMMMMMMSAMAXMXMXMAMMAXXAMXSMMSMSAMMMMASMMMAMXXAMAAAAXAXAXSMMMAMAXSXMAXMXSSSMSAAMXSAMXAAAAMMMXMMSXMXMMMMMAMAAMAMXMMMSAX
|
||||||
|
SAMMMSXMMAMMSSSXMMSXMMSXMASXXSAXSXSAMASXMSAMSMSMSAXAXMMSXMMAAAAMMSSXAMSMSMSMMAMASXSAMSMMASMMSAAAAAMSMMMSMSMMMMSMAAAXXMAMAMSXSXXMMXSASAMMXSMM
|
||||||
|
MAMXAAAMSMMMAXMAXAMAXAXMMASMASAMXAMMSMMMXMMXAMAXXSMMMSXSAXMSSSMSAXXMAMXAAAAMXXAMMMMAXMAXAMXAMMSMMMMASAAXMAMXSAMXMMMXAMAMAXSASMXXAAMAXASXMXAA
|
||||||
|
SAMMMSAMAAMMMSSSMMMAMSSSMAXMAMMMMAMXSMAMAMXSASMSMMXSAXAMXMXAMMAMXSMXMMMSMSMSASMXXAXSMSSMSSMXSXMASXSASMSMMSSXMASXSAAASXMSMSMAMAMMMMSSSMMASXMM
|
||||||
|
SASAAXXSSSMAXMAMASMAMAAMMSSMASMSSMMMMMAMAXAXXMAMAAAMMMSMMMMMSMAMSXMASXAMAMXMXMSASXSMAXMMAAMXAMSMMMMMSAMAXXXMXAMAMMSMXAMXXAMMMMXAMXAXAXSXMASM
|
||||||
|
SMSMMSAMAXMMMMAMAMXSMMMMAXAMASAAMXAAMSMSXSASXSSSMMSXSAAXAMAMAXAXMASASMMMMMAMMMMXMMAMSMXMMSMSMMAMAMSAMXSMXMAMAAMXXAAXXAMSSSMXAXXXSMXSMMMASAMX
|
||||||
|
MXXAXXXMMMSMMSXMASAMAXXMMSAMXMMSMSSMXAAAAMXMAAXAXAXXMMMXMSASMSMXSAMXXXXAXSASAAXMASAMXMMXXAXXXMASASMXSAMMASAMSXMSMMSMSAMXAXAMSMSAXMAMMASMMSMX
|
||||||
|
MSMSMMMMXXXAAMASAMMSAMSAMXAXXAXAAMAMSMMSSMSMMSSSMSSMMMSAASXSXAXAMXSMSMSMMSASMXMMAMAMXAASXMMXSMMSXSXAMAXSAMAXMAMSAAAMMMSXSMXMAAMMMMSMSXSXAAXX
|
||||||
|
XAAAXAAAXMXMMXAMASXXXSSXMMMMMSSMSMAMAXAAAAXAXAAAAAXAAAMMMMMSMMSMXMAAAAAMXMMMASXSSSSMMMMXAASXSAASASMXMSMMASMMSSMSSMXSAAAAXXSMMMMXAAAMAMXMSSMM
|
||||||
|
SMSMMSSXSASXMMSMMMMSSXMASAMXMAAMMMMSXMSSSMSMMMSMMSMMMSSMSMAXMMAMASMSMSMSASXMMMAAAAMXMASMSMMASMMMMMAAXXASAMAAXXAMMMMSMSMMSAMXSSXSMSSXMAAMMMAM
|
||||||
|
XMAMXXXMAMAASAMAAAAMAXXAMASAMSSMASMMAXMAMXSMSMXXAXASAAMXAMSSMMAXMMAAAAASAXAAXMMMMAMSXAXXXAMXMXAAMXSMMSAMXMMMSMMMAAMXMMMXMAMASMAXXAMAXSXSXSAM
|
||||||
|
XMAMMMASMMMXMASXSMSSMMMSSMSMXMMMMSASXMMMMMXAAAXMAXAMXXSMMMMAMSSSSMSMSMXMSMSMMMXMMXAXMASMSMMAMSSSSMAMAXMXSXMASASMSXSAXMAXSAMXSMMMSSSMMMMMMSAS
|
||||||
|
AMSSMSAMXSXMMAMAXMAXAAAAAAMXAAASMSMMXSAMAAMSMSSSSMAMSXSASXMAMXMAXAAMXMXAAMAMXMAXSMXSAMAAAASXMAAMXXAMSMSAXAMAMMMMAASMSMXMMAMAMAAAAMAXAMASAMXX
|
||||||
|
XAAAXMASAAAXMSXMXMASXMSMMMMMSXMXAMXAXMASASAXAXAAAXSMMASAMASMSMMAMMMMASMMMXAXAMXMXAAAMAMXMXSMMMSMMMMMXAMXSSMAMAAXMMMMAMAMXMMASMMMSSSMXSASXXXA
|
||||||
|
XSMSMSAMXSSMSMSMAMASAAMXSAXXMMSSXMMSMSAMAMMMSMMMMSMAMAMAMMMXAMMXSXXSASAMSSSSSSSXMMMSMXMXMAMASAMXAASAMAMAXXSAMSSSXMASMSXSAMSAMAAMAAASXMASXMSS
|
||||||
|
XMAXAMXMXAMXAAAMSMMMMMSASAMAAAAAAXXAAXAMXMXAMAMXXAXAMMSXXMXMAMSAMXXMAMAMAAXAAAXAMXAXAMMSMASASMXSXXXAXMMSSMMXXAAXMMMMAAAXAMMASMMMMSSMMMAMAMAA
|
||||||
|
MMAMAMXSXMXSMMSAMAXXSSMASMSSMMSSMMMMSMSSSMMMSMMMSMMSAMXMXMMSMSXSXMASXSSMMMMMMMMSAMXSMSAAMMMXSAXSSSSSMXAAXMAMMMMMMASMMMSXSMSAMMAXAMAAAMASMMMA
|
||||||
|
ASAXAMXXAMMXMMXASAMXMAMAMXAAXAAAMAMAAAXAAXAXAXAMAAXMXSAMAXMAMXAXSAXMAXXAXXAAXXAXAMXXAMMSSSMMMXMXAXAMXMMSMMSMSAMASASAMAMAMXMAXSSMMMMMMSASXMXM
|
||||||
|
MSMSXXASMMAAMAMXMXXXXXMAXMXSMMSMSAXSXSMXMSSSMXSSMXMAAXASAMSMSMSMXMSMSMSXMASMSMASMMXMMMAMAAASXSMMXMXMSMAAAXAMXASMSASMMAXMASMSMAAASMSSXMXXAMMX
|
||||||
|
ASAAAXXMAMXSSSXXXMMSMXXXSSXXXXMMSAXMAMXMXXMAMAXAMXSMMSAMMMXXXAMSMASAMXAXAXMAAXMXMASAXMXSSSXMAMMAASMMMMSSSMASXXMMMAMXMASMXMAMMSMMSAAMXMAXSMSX
|
||||||
|
MMMMSAMMAXXAAASMASASXAXSAMXSSSMMMSAMXSXSMMMSMMSAMAAAMMXMMAMSMSAAMMMAMAMXSXMSAMXMXMAMMXXMAMMMSMASXXAAXXAAXMAMXXSAMXMAMSMMAMXMAXMAMMMMAMMSMAMX
|
||||||
|
XAXAXMASASMMMMAMAMSMMMMSAMASASXXAMXSAMMAAMAAMXSAMMMSMAXXMAMXAMXMSXSAMAXAXXMASMXMAMAXSXSMMMAMAXMXASXMMMMMMSSMMMSXSAMAXMASXMAMXSMSSMXSXXMAMAMM
|
||||||
|
SAMXSXMMASXSXXMMSMXXASASXMXMAMXMMMXMASMSMMXMSASAMXXAAXMXSSSMXMMSMMSMSAMXAXMAMMMSSSSMXAAXXSSSMXXMMMAAXAAXMAMAAAMXSASMXSAMMSMSMAAAAXAMMSSXSMSS
|
||||||
|
MXMASMSMMMAXMXXXMASMMMMSAMXMAMMSAMMMXMAMASXSMASMSSXMASMXXAAXAXXAAMXMXXXXSAMASAAMXAAMMMMXXXMAXSMSXSSMMSASMASMSMSAXAMXMMASAAXAASMSSMXSAXMASAAM
|
||||||
|
MAMMMXAAXMSMSMSXMAMAAXXSXMASAXASASAAMMMMAMMAMXMAMXAXMAMMMSMMMMSSSMAMMSMMAMSASMSSMSMMXAXMMMSMMSAAAAXAXXAXXMMAAAMAMSSSXMSMMXSMXMAMXAXMAMMSSMMS
|
||||||
|
SXSSSSSSMAMAAXSAMXSSMMMMXSAXMMXXAMMAAAAMASAMSSMXMSXMMMAXMAXAAAXMAXASMSXAAXMMSAAXAAAMSMMASASAAXXXSMMMMMSMSMMSMMMAMAAAAMMAXMAXAMAMMMMXMAMAMAAX
|
||||||
|
AAAAAAAAMAMSMMSAMAMXMXMXAMSMSXSMXMXMSXMSAXMXAAXMMSMSXMMXSASXXMMSAMXXXMASXSXAMMMSSSSMXAASMASMMSMMAXXAAXAAXXAMAXSXSMSMMMMAMSAMMSXMAXSSMMSASMMS
|
||||||
|
MMMAMMMSMMMXSAMAMASAMAMMMSXXSAAMXMAXAXMMMSMMSSMMMMAMAASXSASMMSAMXSMMAXXMASMMSMAXAMXMSAMMMAMASAXSAMSMSSMSMMMSMMSXMAXXXXMAMXMMXAMMSMXAAXSAMMSM
|
||||||
|
XXAMXXXMAXSSMMSSMXSASASASAMAMSMMASASMMMAMXXAAAXSAMAMSMAAMSMAAMASAAASASAMXMASAMMSSMAMXMASMXSMMAMSAMXAAMMAASAAAAMAXSSMMMSASAMXXXSAMSSMMMMAMMXM
|
||||||
|
MSMMMMMXSMMAAMAMSAXMMMMXSAMSMMMSMAASXAMSMMMSSMMSXSAMAMMXMAXMMMAMXSMMMXXMASXSASAAAMXMAXSXSAAXMXMXMXMMMSSSSMASMMMMMXAXAAMXSASMSMMMSAXAASXMMMAX
|
||||||
|
XAASMMSAAASXMMAXMMMMSSMMSXMAAAMAAMAMXXXMASAMAXAXMMMSASXMMMSMSMMMAXAXXMASASXSMMMXSMSSSMMAMXMSXMMMMMXAXXXMAMAMASAASMMMSSSMSMMAMAASMMSSXXAAMXMX
|
||||||
|
MSSMAAMSSMMXXSMXSXSAAAXAMMMMXMMMSMSXSMMSAMASXMSSMSXSMMAMAMSASXSMSSSMXSAMASMSMAXMAAAAAAMMMMXMAMSAAAXMMMMSMMMSAMAMXAAAAXAASXMSMSMSXMAXAMSMMASM
|
||||||
|
AXMAMMMXMASXMASASAAMSXMAXSASMSSXXAXMMAAMASAMAAAAXSASXSXMAMMAMMSAAAAAXMAMSMMXSASXMMMSMSMAAXAXXMAXSXMAAAAAXAXMMMSSSSMMSSMMMAXMAXAXXMASMMXAMAXA
|
||||||
|
MMAAMXMAMAXXSASMMSMXMXSXMMAXAAAXMSXAMMMMMMMMMMMSMMAMASMSSMMSMAMXMXMXMMAMMASMMMMXAAAXXMXSSSSSMXMMMASMSSSSSMSAMXMAAXAMXXAASXMMMMSMMSAMXASXMXSS
|
||||||
|
AMSMSXSAMXSMMASXAAXAAAXSXMSMMMMXXXMSXSMXSASXAMXMXMAMAMMMMAXAXMMMMSMSSSSXSAMAAXXSSMSSMSMMAAXXXASMMAMAAAAXAMSAMXMMMMXXASXMSMSXMAXSAMXSMMSASAAM
|
||||||
|
SMAAXASXSAAAMXMMMSMMMMSMSAMXXAXMMXAXAMXXMAMMMMAMASAMASAAXMMMMXMAMAMAAAAAMMMSMMAMAAAAMAAMMMMMSMSAMXMMMMMSMMSXMXAAAMMMMSASMMAXMASMXSAMXXSAMMSM
|
||||||
|
ASMMMMMAMMSMMASMAAAXXXAMSMSSSMXMAMSMMMSSMAMAAMXSASASASMSSXSXAASMSMSSMMMMMXXASXMSSMMSSSMMXXAASXSAMXXXAXXXAAXAMMSMSAAMXMMXAASMSMMAAMXSAXMASXMA
|
||||||
|
MAMSSXMAMXXAMAXMMSSMAMXXXAXMAMAMXAXAAAAAXAMMXXXMAMAMAXAMMAMASXMAAXAXSXXXAXMAXSAAXXAXAAASMMSXSASXSSXSMSMSMMXAMXAAXXMXAMXSSMMMAAMMMSXMMXSSMASX
|
||||||
|
XMSAAMSMSSSSMSMSAAAXXSMMMSMXAMMSMAMSMMSSSMSMSAMXSMSMSMASMMMAMMMSMMMSXSMMSSMMMMMMSMMMMSMMAAXAMAMAMAASAAXMAXSASXXSMAMSMMAAAASXSSMMMSAXAASASAMM
|
||||||
|
SXMMSMAAAAAMAAAMMSMMSXAAAAASMSAXMAMAAMAAAAAASMAAXAXAXSAMAAMASXXMASXSAMXAAAAAXXSAMXSAMXXMMMMAMAMAMMSMSMMSAMSAMAXXMXMASMXSSMMMXAAAASMMMSSMMMSA
|
||||||
|
XXXXXXMSMMMMMMSMXAXMASXMSXMAAMMSSMSSSMXSMMMMMMSAMSMMMMMSSMSXSASXMMSMAMMMSSMMAMXXMASXSAXMAMSXSXSXSXXMAMXMXXMMMAMXAXMAMSAAXMXMASXMMSXXMAMXXMAX
|
1380
y2024/resources/5_input.txt
Normal file
1380
y2024/resources/5_input.txt
Normal file
File diff suppressed because it is too large
Load Diff
130
y2024/resources/6_input.txt
Normal file
130
y2024/resources/6_input.txt
Normal file
@ -0,0 +1,130 @@
|
|||||||
|
.........................#...........#.#...#...............#..............##.....................#...........#..#.........#.......
|
||||||
|
.....................#.................#.......#.........................#...........#.#.......#..................................
|
||||||
|
.........#...........#........#.........#.........#...........#........................................#.........................#
|
||||||
|
.......#.........................#...........................#.............#......................................................
|
||||||
|
..................#................##...............#.#.....................##............#.......................................
|
||||||
|
......#...#................#..................................................................#....#.#............................
|
||||||
|
.......##................#........#..#.......#......................................#........#............#......###..........#...
|
||||||
|
.....................#....................................................#...........#..#...#..........................#.........
|
||||||
|
...........#....#...........................#.#...............#..#....................................#..............#......#.....
|
||||||
|
.....#........##...............#.......#..#..............................................#..........................#.............
|
||||||
|
.#.........#.#...........................#..........................#......................#...........#........#.................
|
||||||
|
.................................................................#..#.#.......#..#................................................
|
||||||
|
...............................................#.......#...................#....................#.................................
|
||||||
|
.......#......#......#......................#...............................#.....##........#...........#......#..................
|
||||||
|
........................................................................................................#.....#.#.................
|
||||||
|
..#...............................#.#..................................#.............#............................................
|
||||||
|
..............#..........................................#.....#.....#..........................#....#.........#..................
|
||||||
|
...................................#........................................#................#...........##.....#....#............
|
||||||
|
.#.....................................#.......#........................#...................##............#.......................
|
||||||
|
.#..................#...........#...........................................................................................#.....
|
||||||
|
........................#...................................................##.................................#..#..........##...
|
||||||
|
........#............................#.......#...........................#.#...#...................................#.....#........
|
||||||
|
...............................#............#.....#......................#.......#...#........................#...................
|
||||||
|
.........#.............#.................................................#.......................................#....#...........
|
||||||
|
...................................................................#...#.................................#...................#....
|
||||||
|
...#.....................#...#...............#..................................................#...#...#.........................
|
||||||
|
...................#........#....#....#..#..#...................#.........#..................#..#....#.......#.#.................#
|
||||||
|
..............................#........................................#......#.....#..............##................#............
|
||||||
|
............#..#.............#.......#........................................................##........#.....#...................
|
||||||
|
.....#.............................................................#...#.#.#.............................#..#.#...........#.......
|
||||||
|
.......#....#............................................#.................................#...................................#..
|
||||||
|
..#.................#.......#..........................#........................................#...............#..............#..
|
||||||
|
....#.#...................#............................#..#.......................................................................
|
||||||
|
.......................#...............#..............#......#......................#.....................#..............#........
|
||||||
|
.#..........#.......................................................................#....................................#........
|
||||||
|
.#.......#..................................................................#.....................................................
|
||||||
|
..................................................#.............#.............................................#................#.#
|
||||||
|
.......................#......#....#................#......................................................#.......#.........#....
|
||||||
|
..........................#.#........................................................#......#................................#....
|
||||||
|
....................................................................#...............................#.............................
|
||||||
|
..#...........#..............................#..#....#............................#...............##..............#...#...#...#..#
|
||||||
|
...................................#................................................................#....#...................#....
|
||||||
|
..#....#........#..##....#........................#...#...................................#.......................................
|
||||||
|
...................#................................................................................................#.............
|
||||||
|
.......#........#................#...#.......................................................................#....................
|
||||||
|
..............#....................#..........................##.........#.....................................#..................
|
||||||
|
.........................................................................#.................#........................#.............
|
||||||
|
.............................#..........#.......................................................#......................#..........
|
||||||
|
............###....................................................................#.......................#......................
|
||||||
|
........#........#...........#.............................#....................#..........#.........................#.#.....#....
|
||||||
|
.........................................................................................................#..#.....................
|
||||||
|
#.#.....#..........................................................#.....................#........................................
|
||||||
|
........##..........#....................................................#..#........#.......#........#................#..........
|
||||||
|
.............................................#..........................#.........#........................#......................
|
||||||
|
...........................##.............#........................#.#........................#..#................#.....#........#
|
||||||
|
#...#..............................................#........#...................................................#.................
|
||||||
|
.............#................#............................#............#.........................................................
|
||||||
|
#..........................#............#.....................#.....#.................#......#...##...#.............#.#...........
|
||||||
|
.....................#...#..#....#...................................#....................#..............#........#...............
|
||||||
|
.......................#.................#...........#....#.......#...........................................#..#................
|
||||||
|
.........#...........#.#.........#.........................#.....#................................................................
|
||||||
|
....................#........#...................................................................#............#..#.#.#............
|
||||||
|
..........#.......................#.......................#.......................................................................
|
||||||
|
......................................#......#............................#..............................................#........
|
||||||
|
.....................#...#.................#.............................#....#...................................................
|
||||||
|
..............##...................................................................#......................................##......
|
||||||
|
.....#....#...............................................#.......#.##........#.#.............#...............#...................
|
||||||
|
....................................#......................#........#.......................................................#.....
|
||||||
|
.....#.........................................#.....................#.............#.................#..................#.........
|
||||||
|
................................#.........#..#............................................#.........................#.............
|
||||||
|
....#.#.....................#......#...................................#..........................................#..#.....#...#..
|
||||||
|
.........##.......................#..........................................#.........................#...##.....................
|
||||||
|
...............................................................#................................................................#.
|
||||||
|
............#.........................................##.......................................#..................................
|
||||||
|
.............................#..............................#..................#.........#.....#..................................
|
||||||
|
..........................................................#...#.....#..................#................................#.........
|
||||||
|
......#...................#.........................................................................................#.............
|
||||||
|
#...............................#...........................#.....................................................................
|
||||||
|
.......#........#.................................................#.......................................................#.......
|
||||||
|
.#......................................................#..............#..................................#...........#...........
|
||||||
|
.............#..#.#.......................#..........#......#.##.........................................................#..#.....
|
||||||
|
.......#...............#........#......................................................................#..#...........#...........
|
||||||
|
............#.........................................#................................................#...................#......
|
||||||
|
............#...........................................#.#.......#....................................#..........................
|
||||||
|
...........................................#.........................................................#..............#.............
|
||||||
|
..................#..#....................................................#..................#....................................
|
||||||
|
..#........................#........#.............................................................................................
|
||||||
|
.............#........#......................#.......................................#...#....#............................#......
|
||||||
|
............#.......#.............#...#...........#.#.................................#.................##........................
|
||||||
|
.....................................................................................#.........#.......................#.....#....
|
||||||
|
.................#................................#..#....#......#..........................................#.....#...............
|
||||||
|
..#...............................#........................................................#.......#...#............#.............
|
||||||
|
#.........#..#..#.....................................#....................................#................#.................#...
|
||||||
|
.......................#..#...#............................................................................#..#.....#.......##....
|
||||||
|
..........#............#.......................#.........................^......#.#...................................#...........
|
||||||
|
...##........................##..........#..........#.................#...............#...........#.....##........................
|
||||||
|
..............#............#..........................#....#...........#......#......#......................#.....................
|
||||||
|
......#.....#....................................................#............#.#......................................#..........
|
||||||
|
......#.............................#......................#...............................#........#.............................
|
||||||
|
.#..........#.............................................#.............................................#.........................
|
||||||
|
...............................##.................................................................................................
|
||||||
|
.....................#................................................#...............#............#...............#.....#.....#..
|
||||||
|
..................#...........................................................................#...........#...................#...
|
||||||
|
##..............................#.#...#.#...............................#...........#.#...................#.......................
|
||||||
|
......................#.........#...................................#.................#...........................................
|
||||||
|
.......................#............................................................................#.........##...........#......
|
||||||
|
.....................................................................#.......#.....#.......................................#......
|
||||||
|
#....................................#........#.#.................................................................##.....#........
|
||||||
|
..............#..............................#......#..........###.........#................#..............#..................#...
|
||||||
|
..................................#..............................#.................##.............................#...#...........
|
||||||
|
...............#......#........................#....#........#............#.........#..........#..............#......#............
|
||||||
|
...#...........#........#...#...........................#.............#.....................................#.....................
|
||||||
|
..............###............#...........................................................#.............#.........##..#............
|
||||||
|
............#................................................#.......#..................#....#....................................
|
||||||
|
.........#.#...#.....#...........................#.....##......#.....................#..#........#......#.........................
|
||||||
|
.#....#.......#.......................#.................................................................#.......#..............#..
|
||||||
|
...................#................................................................#.............#...#...........#.........#.....
|
||||||
|
.......#.#.......#.......................#....#.....#...............#...#.....#...........................................#.......
|
||||||
|
.......#........#...........................................#...........#.........................#....#.......#..................
|
||||||
|
..................................#.#.................#.#............................................#...........#....#...........
|
||||||
|
....##......#.............#...................................#...#.........#...........................#......#..................
|
||||||
|
.........................#......#....#...#........................................................................................
|
||||||
|
...#...............#............................................................................#...........................#.....
|
||||||
|
....##.#..............................................#............#................#................................#......#.....
|
||||||
|
.........#...........................................#...#.......##..............................#................................
|
||||||
|
..................#..........#......#.......#......................................#........#...............#......#...........##.
|
||||||
|
........................................#......#..........#......................................................................#
|
||||||
|
..............#...#...................#.....#..........................................................#..............#......#....
|
||||||
|
...#........#........................#...#................#........#.............................##..........................#....
|
||||||
|
............#............................#.#........................#.................................#..........................#
|
850
y2024/resources/7_input.txt
Normal file
850
y2024/resources/7_input.txt
Normal file
@ -0,0 +1,850 @@
|
|||||||
|
27905293: 1 3 67 91 5 5 293
|
||||||
|
2656278: 383 3 7 99 1 8
|
||||||
|
5824995: 5 1 8 2 1 89 1 6 4 2 47 3
|
||||||
|
777381126: 9 749 93 7 31 8 4 2 1 5 6
|
||||||
|
1315092: 3 29 76 4 46 83 6
|
||||||
|
1746: 680 675 375 9 7
|
||||||
|
3811598532: 17 1 60 697 7 35 7 6 6 7
|
||||||
|
1698008: 2 5 63 5 81 47 86
|
||||||
|
3308151: 8 367 1 33 36 9 2 59 3 7
|
||||||
|
304128: 8 44 864
|
||||||
|
271358: 1 1 4 1 8 5 3 7 35 53 35
|
||||||
|
2822415: 658 1 2 1 683 7 300 7 8
|
||||||
|
151115404843801: 616 5 62 9 225 76 578
|
||||||
|
10594914304: 4 88 844 533 256
|
||||||
|
137763: 1 7 123 16 3
|
||||||
|
957305: 90 408 30 66 26 89
|
||||||
|
11046: 83 9 40 3 6
|
||||||
|
4055108: 584 289 929 5 5
|
||||||
|
517632: 191 820 8 8 8
|
||||||
|
58113832155: 23 95 9 7 781 1 5 969
|
||||||
|
138631373: 19 1 1 912 922 8
|
||||||
|
29300652: 59 66 930 28 628 9
|
||||||
|
4910830: 613 8 6 1 830
|
||||||
|
432310: 199 5 2 6 1 5 8 5 1 1 17 5
|
||||||
|
1692639962: 7 3 85 9 33 76 3 8 996 2
|
||||||
|
1051087603: 20 689 2 499 760 2 5 3
|
||||||
|
132193862: 5 47 99 79 501 2
|
||||||
|
10468: 443 651 3 930 1 5 333
|
||||||
|
225: 17 8 7 2 48
|
||||||
|
8849850: 884 96 2 48 2
|
||||||
|
7998370616: 9 3 3 932 457 856 77 6
|
||||||
|
197685: 625 7 5 90 9
|
||||||
|
23362468: 53 5 76 53 68
|
||||||
|
146418: 83 580 665 3 2 1
|
||||||
|
80662: 29 4 31 3 2 7 4 82 49 6 2
|
||||||
|
86857594: 8 674 4 70 9 34 593 1
|
||||||
|
29621764: 5 447 6 93 7 8 5 4 6 8 1 4
|
||||||
|
62943216: 49 79 1 1 83 592
|
||||||
|
263797648: 8 7 90 3 3 3 4 2 5 6 4 9
|
||||||
|
106637574552: 8 6 8 9 7 1 2 6 96 819 8
|
||||||
|
31539503114: 9 2 41 8 6 3 88 874
|
||||||
|
44281: 14 53 66 8 29
|
||||||
|
627: 2 9 60 8 3
|
||||||
|
7986693: 387 737 1 28 561
|
||||||
|
61698: 70 4 2 5 941 5 1 4 5 6 2 7
|
||||||
|
4065686352: 528 77 858 11 544
|
||||||
|
111069384: 6 723 758 3 6 67
|
||||||
|
110111: 7 650 4 6 911
|
||||||
|
48258: 7 23 3 46 1 619 66 2 7 9
|
||||||
|
186553437: 12 955 10 18 8
|
||||||
|
20190745: 1 9 343 2 19 3 43 8 9
|
||||||
|
14450403260: 29 983 2 567 85 1 16
|
||||||
|
2309768370: 225 179 7 98 90 91
|
||||||
|
1606331569716: 5 568 3 538 56 7 93 6
|
||||||
|
11725: 854 51 264 3 8
|
||||||
|
102771365: 223 3 95 116 12 23 1 8
|
||||||
|
644732: 86 8 6 929 6
|
||||||
|
44043274814: 944 90 6 8 2 8 4 9 3 1 3 9
|
||||||
|
23433: 5 2 42 2 139 2 8 41 8 7 7
|
||||||
|
2543688: 2 309 7 7 84
|
||||||
|
12624245: 5 574 4 36 4 5 2 6 424 5
|
||||||
|
294110: 5 474 614 4 1
|
||||||
|
12960696: 61 2 49 8 6 7 2 5 9 428 3
|
||||||
|
49735: 4 608 8 1 774
|
||||||
|
24927276192: 263 7 59 290 8 58 78
|
||||||
|
5671488: 77 766 96 2 48
|
||||||
|
6620: 92 7 390 20 13
|
||||||
|
470191854: 59 754 34 123 47
|
||||||
|
3798480: 8 43 1 4 4 46 146 665
|
||||||
|
55957973060: 3 3 64 7 8 1 2 63 1 9 58
|
||||||
|
1516: 6 682 828 1
|
||||||
|
122967: 3 6 1 44 8 1 724 67
|
||||||
|
436407154: 25 5 931 25 3 18 5 5
|
||||||
|
1552941: 24 647 45 5 90 1
|
||||||
|
4341530601: 156 6 1 453 4 7 90 9 17
|
||||||
|
64528843: 94 893 2 34 34 125 5 8
|
||||||
|
14176705232: 4 97 685 889 6 3 1 5 1 2
|
||||||
|
477175854523: 592 14 2 73 133 3 83
|
||||||
|
1506816: 5 64 76 9 24
|
||||||
|
1108966: 158 33 2 58 5
|
||||||
|
53886806512: 5 4 6 7 1 2 8 49 8 2 77 8
|
||||||
|
10564: 2 137 4 19 1
|
||||||
|
14965861605: 864 632 584 2 16 2 1 5
|
||||||
|
1744751: 9 7 273 3 7 74 21 6 19
|
||||||
|
310301175: 306 73 281 331 33 4 9
|
||||||
|
56733603: 30 70 28 66 3
|
||||||
|
14200304: 22 49 257 585 2 8 6 74
|
||||||
|
2058562: 5 219 6 327 13 7 8
|
||||||
|
55940568098: 931 8 8 46 28 60 98
|
||||||
|
367211289881: 992 517 93 716 1
|
||||||
|
171: 56 3 3
|
||||||
|
68135804: 859 8 708 111 8
|
||||||
|
19576263: 21 7 1 9 37 263
|
||||||
|
29648: 2 96 4 8
|
||||||
|
115798: 39 29 4 22 98 1
|
||||||
|
284294885: 170 4 3 959 60 62 21 7
|
||||||
|
1387776767: 8 18 56 96 765
|
||||||
|
516468: 5 16 46 5 3
|
||||||
|
64989: 4 6 32 3 83
|
||||||
|
7703: 836 8 97 2 3 29 884
|
||||||
|
2593692364: 431 2 3 427 8 7 6 668
|
||||||
|
67323: 5 119 13 28 748
|
||||||
|
650573172008: 169 86 24 470 383
|
||||||
|
359664: 80 5 2 32 88 1 7 8 7 2 1 1
|
||||||
|
3057397: 4 83 633 3 4
|
||||||
|
127259832457: 1 755 1 499 84 2 457
|
||||||
|
4237026: 9 2 58 4 8 2 3 51 2 22 2 6
|
||||||
|
10830240: 54 54 591 9 88 7 5 960
|
||||||
|
1617: 15 107 6 6
|
||||||
|
2420840404: 763 9 3 7 4 9 8 8 3 44 1 2
|
||||||
|
14890230: 2 49 485 503 310
|
||||||
|
251591: 8 7 14 974 8 632 28 39
|
||||||
|
1748935814: 7 347 3 22 5 6 6 6 9 8 9 5
|
||||||
|
8849341: 758 26 1 449
|
||||||
|
2067721: 485 1 88 2 6 4 5 2 60 1
|
||||||
|
188944: 99 3 764 8 4 2 3 2 9 3 49
|
||||||
|
13561782: 5 5 1 5 8 3 77 3 3 627 7 8
|
||||||
|
259593: 1 2 2 3 1 8 9 4 92 507 8 1
|
||||||
|
7419051443: 6 4 8 8 24 119 1 4 2 9 3 4
|
||||||
|
2193864: 19 2 4 23 3 864
|
||||||
|
157860: 8 8 360 3 5 1 5 3 2 9 60 1
|
||||||
|
735258079483: 227 8 81 45 46 717
|
||||||
|
1397845: 6 908 1 2 22 98 689 2 4
|
||||||
|
27164919: 9 8 95 7 4 61 1 65 639
|
||||||
|
9617797: 28 5 2 3 9 8 1 5 8 91 3 7
|
||||||
|
100267221822: 6 33 93 6 6 1 9 720 3 2 7
|
||||||
|
1899738: 8 6 4 1 5 3 71 5 257 1 8
|
||||||
|
788: 4 7 64 4 709
|
||||||
|
5498294599: 7 3 1 743 935 8 9 9 83 9
|
||||||
|
705: 696 8 1
|
||||||
|
1321530: 89 7 40 9 6 5 50 988 7 5
|
||||||
|
2907: 51 5 37 170 665
|
||||||
|
36677522025: 1 8 9 1 2 6 1 69 3 3 6 593
|
||||||
|
488609631430: 86 326 7 9 566 27
|
||||||
|
25363583907: 2 38 99 922 907 9 9 6
|
||||||
|
21215: 7 47 56 7 42 5
|
||||||
|
124533200: 4 5 4 7 8 6 9 913 620 1 2
|
||||||
|
664025757: 8 3 1 7 568 1 8 7 8 1 1 57
|
||||||
|
58480049: 1 4 7 3 32 1 4 23 29 882
|
||||||
|
9718953216: 953 4 7 813 448
|
||||||
|
5959367270: 9 92 727 29 99
|
||||||
|
64885475: 2 2 2 1 466 9 573 3 101
|
||||||
|
101581: 5 1 7 7 4 7 66 19 6 3 3 85
|
||||||
|
573594: 4 9 3 64 7 8 6 4 7 13 5 42
|
||||||
|
3872278848: 766 94 506 41 45
|
||||||
|
1518518570: 4 134 4 8 708 3 8 10 60
|
||||||
|
95359660: 617 50 24 851 7 4
|
||||||
|
328296: 122 32 14 60 6
|
||||||
|
6086: 1 8 8 353 8 8 8 2 1 71 62
|
||||||
|
5686734: 8 9 77 724 5 2 56 8 1 6 6
|
||||||
|
91728244: 917 282 44
|
||||||
|
265091: 5 7 3 6 91 7 94 92 616 9
|
||||||
|
42537077900: 3 71 773 608 73 826
|
||||||
|
166742488: 5 9 21 3 4 6 38 652 6 1 1
|
||||||
|
207065430: 90 73 58 4 429 9 429 5
|
||||||
|
169143260: 880 336 25 13 44
|
||||||
|
9409727: 905 31 1 48 727
|
||||||
|
1830828247: 5 9 112 6 936 9 7 5 12 9
|
||||||
|
27012357: 2 53 43 1 47 9 6 9 510 3
|
||||||
|
636: 18 5 38 4 7 8 1 173
|
||||||
|
10194082033: 8 43 35 80 4 58 4 5 3 3 1
|
||||||
|
485329600: 43 5 53 29 600
|
||||||
|
263277: 94 1 1 4 75 9 9 429 3 3 9
|
||||||
|
4234054029: 36 2 6 370 4 9 206 6 7
|
||||||
|
903573: 994 909 27
|
||||||
|
7538939: 84 591 78 893 9
|
||||||
|
402422855515: 737 886 551 45 55 15
|
||||||
|
164268: 705 3 29 8 9
|
||||||
|
32388: 6 302 58 2 1 22 2 88 92
|
||||||
|
6000999669: 976 26 8 92 67 3 6 9 7 7
|
||||||
|
9581: 5 383 5 3 3
|
||||||
|
39886: 67 8 2 62 49
|
||||||
|
494328620: 617 2 7 4 15 29 8 61 2 6
|
||||||
|
441490: 7 2 85 7 53
|
||||||
|
408601440: 7 552 286 1 138 8 438
|
||||||
|
20555197: 995 74 836 23 465 1
|
||||||
|
6837515448: 125 229 22 6 91 36
|
||||||
|
54960872: 45 3 8 9 2 6 4 1 283 7 1 8
|
||||||
|
126616: 14 9 514 60 42
|
||||||
|
117207453600: 84 4 663 3 25 496 162
|
||||||
|
1538: 4 6 2 3 5 6 91 587 2 3 1
|
||||||
|
27238435993600: 793 85 8 2 335 76 992
|
||||||
|
20667334: 36 90 2 65 40 1 28 394
|
||||||
|
11439: 161 71 8
|
||||||
|
2916: 18 2 926 21 5 3
|
||||||
|
93277: 92 934 4 29 9 640
|
||||||
|
75053: 31 60 7 4 7 618
|
||||||
|
17972: 4 3 93 4 4 7 71 31 7
|
||||||
|
2679: 3 17 34 1 642
|
||||||
|
43731525: 9 22 7 790 668 47
|
||||||
|
17227: 701 221 26 18 163
|
||||||
|
5666750: 54 17 459 4 661 950
|
||||||
|
1958196985: 80 993 290 9 85 220
|
||||||
|
1203446220: 44 132 2 683 219
|
||||||
|
33165: 2 4 9 165
|
||||||
|
6523355997: 7 765 9 600 4 35
|
||||||
|
198552432960: 340 643 53 34 504
|
||||||
|
194266007: 2 3 31 7 9 4 26 5 4 2 9 5
|
||||||
|
81637477: 78 3 1 56 92 621 61 77
|
||||||
|
5579136: 387 949 232 6 3
|
||||||
|
502464150: 9 919 15 5 9 2 8 8 4 3 5 3
|
||||||
|
2419: 7 55 1 9 3 5 426 3 4 3 8 1
|
||||||
|
179766373116: 5 4 4 3 3 7 66 9 419 6
|
||||||
|
3439571526: 683 5 8 6 4 31 8 6 79 7 6
|
||||||
|
79292: 43 1 901 2 4
|
||||||
|
9781384: 155 95 6 8 83
|
||||||
|
47172: 8 8 5 682 105 9
|
||||||
|
316827: 93 7 9 54 7 9 252 85 88
|
||||||
|
5583938067: 140 3 813 73 8 1 345 6
|
||||||
|
3713632: 1 7 80 97 1 55 8 1 32
|
||||||
|
1612682: 74 5 851 4 1 55 6 1 961
|
||||||
|
59165553920: 7 8 97 8 3 3 4 58 6 4 605
|
||||||
|
9838113120: 24 63 708 44 3 22 55
|
||||||
|
3916: 6 59 2 92 3 887 629
|
||||||
|
12385917: 479 87 33 76 928 9
|
||||||
|
51: 29 8 6 1 8
|
||||||
|
31010148: 3 868 5 113 7 767 9
|
||||||
|
370693272485: 8 4 6 6 468 9 3 4 72 485
|
||||||
|
28267096: 1 283 8 9 34 1 9 12 12 7
|
||||||
|
1278: 9 5 3 29 18
|
||||||
|
3848: 25 5 2 64 8
|
||||||
|
37941: 845 3 215 894 6 905 3
|
||||||
|
420077: 52 509 8 1 4
|
||||||
|
734492: 9 11 7 8 91
|
||||||
|
312542217: 791 542 9 1 1 45 9 8 9
|
||||||
|
1054840080171: 94 18 215 2 56 168 3
|
||||||
|
83181687076: 4 5 994 4 10 8 18 82
|
||||||
|
1760: 293 5 70 9 216
|
||||||
|
117725: 16 27 1 6 1 9 208 5
|
||||||
|
2920: 5 8 2 667 4 5 83 6 7 86 5
|
||||||
|
170679: 283 9 67 1 29
|
||||||
|
1776762: 355 50 17 62 1
|
||||||
|
1363805: 987 2 8 539 5 885 8 9 3
|
||||||
|
2994922: 2 61 8 1 71 7 46
|
||||||
|
64978320: 346 8 24 8 978
|
||||||
|
106207: 72 28 6 147 60
|
||||||
|
160065: 96 75 71 9 7 7 73 3 46
|
||||||
|
21439242: 660 3 890 830 21 17 9
|
||||||
|
5306: 38 403 1 12 2
|
||||||
|
26360813569: 2 6 360 7 55 58 33 23 9
|
||||||
|
5270496: 7 15 1 496 462
|
||||||
|
14707533: 76 41 8 590 13
|
||||||
|
12607591584: 744 9 495 5 1 604 7 8
|
||||||
|
59935652: 524 71 3 537 8
|
||||||
|
293059800: 8 74 6 722 825
|
||||||
|
107802: 49 672 24 663 6
|
||||||
|
73438429: 50 4 2 158 83 31
|
||||||
|
12816554: 353 3 6 6 554
|
||||||
|
219288633: 219 287 712 563 361
|
||||||
|
13386240: 67 827 31 483 378
|
||||||
|
432231552: 9 80 2 3 8 108 887 6
|
||||||
|
996050214: 83 5 30 61 57 8 8 897
|
||||||
|
1711946: 36 1 24 915 8 958
|
||||||
|
608141: 11 98 4 562 57
|
||||||
|
20761436: 3 16 371 5 3 105 4 383
|
||||||
|
258724950816: 5 212 339 2 9 8 5 1 2 8
|
||||||
|
6774: 7 6 44 2 86
|
||||||
|
33705612: 74 9 450 52 556 1
|
||||||
|
47099: 4 61 193 7
|
||||||
|
99630864: 688 18 42 7 1 3 48
|
||||||
|
14300172905: 56 409 7 169 4 362 2 4
|
||||||
|
39539513: 50 4 2 4 66 13 247
|
||||||
|
219296465: 679 6 3 8 4 397 25 46
|
||||||
|
358051294: 8 5 5 20 38 4 6 302 1 94
|
||||||
|
1542670872: 66 7 812 209 72
|
||||||
|
83143: 20 50 83 16 127
|
||||||
|
39731: 9 894 44
|
||||||
|
935306790: 6 361 9 7 5 9 819 40 5 3
|
||||||
|
67892: 6 15 8 58 115 4
|
||||||
|
1996831838: 2 4 817 354 2 80 863
|
||||||
|
4943769471878: 701 5 25 27 8 1 697 7
|
||||||
|
2094768: 8 5 9 781 6 23 8 432
|
||||||
|
1499841509: 774 9 3 78 8 715 9 300
|
||||||
|
70082: 725 32 3 62 1 418 2
|
||||||
|
67926144: 27 4 1 6 6 402 3 32 44
|
||||||
|
270950403: 8 784 72 600 3
|
||||||
|
31505774: 7 8 7 1 8 9 390 51 14
|
||||||
|
3725925: 9 8 4 4 1 4 46 7 3 7 5 705
|
||||||
|
18274522950: 90 203 4 52 29 51
|
||||||
|
62066: 40 571 9 6 6
|
||||||
|
37696: 9 69 352 5 340 28 792
|
||||||
|
2504: 146 29 3 2 3 72 851
|
||||||
|
50: 35 8 7
|
||||||
|
244047: 1 8 8 8 23 728 832 7
|
||||||
|
2571894: 910 5 8 9 8 2 2 43 5 6 39
|
||||||
|
393543246398: 6 79 887 947 69 8
|
||||||
|
21805135: 11 93 7 73 58 5 35
|
||||||
|
40625413986: 677 6 54 1 325 3 726 7
|
||||||
|
129329: 3 1 2 256 7 1 9 14 5 249
|
||||||
|
49087845: 40 978 66 894 1 721 2
|
||||||
|
4216656: 4 212 4 647 9
|
||||||
|
25442241: 3 22 441 410 737 94
|
||||||
|
1725308935: 7 6 55 6 1 6 3 9 7 576 8 7
|
||||||
|
358416154: 2 8 2 2 7 90 41 4 1 61 5 4
|
||||||
|
5695326: 5 6 24 94 8 19 819
|
||||||
|
3495960: 3 61 11 9 69 3 15 312
|
||||||
|
2346392: 313 6 4 415 2 4 37
|
||||||
|
36979756: 231 4 493 9 4
|
||||||
|
2323245047: 879 9 6 9 581 6 6 5 6 6 5
|
||||||
|
922836399: 259 663 8 363 99
|
||||||
|
385543: 4 919 9 904 2 7 9 6 6 4 3
|
||||||
|
3605690865: 74 19 6 702 81 3
|
||||||
|
754553: 6 3 6 568 553
|
||||||
|
26695441: 7 5 7 6 5 2 1 6 70 7 234
|
||||||
|
2420298: 94 260 99 38 700
|
||||||
|
603024776: 3 39 4 9 75 51 779
|
||||||
|
860160048: 453 47 84 8 80 8 1 6 5 4
|
||||||
|
19072: 317 6 1 6 44
|
||||||
|
1251666: 539 43 2 3 8 9 6 5 9 4 6 6
|
||||||
|
14688: 9 6 139 2 46 34
|
||||||
|
5405: 6 92 23 44 76 5
|
||||||
|
10278040: 2 28 318 35 9 8 54 5 8
|
||||||
|
105740464: 6 94 51 7 404 65
|
||||||
|
163415: 761 4 37 3 7 29
|
||||||
|
1220: 446 529 242 3
|
||||||
|
1489672573: 5 9 89 6 71 603 969
|
||||||
|
646837: 64 6 5 3 37
|
||||||
|
29640891424: 807 87 644 4 91 7 424
|
||||||
|
1231633258: 3 9 5 2 5 497 34 7 9 9 9 1
|
||||||
|
110635274: 1 5 6 52 75 788 26 47
|
||||||
|
34292621: 647 53 987 550 84
|
||||||
|
1415706432: 698 331 2 7 8 74 2 1 83
|
||||||
|
412: 41 248 27 96
|
||||||
|
53773308: 4 9 7 6 5 8 7 44 6 9 1 522
|
||||||
|
10322676: 96 2 808 8 631 299 4
|
||||||
|
33766: 4 29 9 1 9 5 49 4 3 922 7
|
||||||
|
316707973: 8 5 732 36 36 317 3 73
|
||||||
|
239713: 7 1 4 3 65 37 532 5 2 3 1
|
||||||
|
412616502: 39 6 914 3 114
|
||||||
|
164080507: 23 209 93 517 76
|
||||||
|
1147995: 9 518 6 7 9 1 5 85 1 31
|
||||||
|
38189: 216 165 89
|
||||||
|
1352: 2 2 338
|
||||||
|
94848: 52 5 52 4 76
|
||||||
|
3431: 35 94 75 64 2
|
||||||
|
78549756: 75 243 431 6
|
||||||
|
92185289902: 4 5 72 1 8 5 233 56 902
|
||||||
|
298: 2 6 100 2 46
|
||||||
|
161028: 1 3 1 555 2 9 6 6 858 3 7
|
||||||
|
1534525: 816 4 5 94 445
|
||||||
|
130498923: 7 156 175 4 178 1
|
||||||
|
4583444550: 476 691 929 5 24 3 18
|
||||||
|
232294392: 63 9 9 51 24 33
|
||||||
|
17685502: 739 3 5 34 2 370 7 10 2
|
||||||
|
720634: 935 2 2 1 8 8 1 103 3 5 2
|
||||||
|
32327852: 2 463 31 95 547 6 9 1 1
|
||||||
|
51797: 40 1 8 36 4 7 1 6 5 801 6
|
||||||
|
140760: 2 6 2 69 85
|
||||||
|
7438: 2 7 4 122 606
|
||||||
|
54903: 73 741 174 595 41
|
||||||
|
27065: 8 8 6 173 9 2 21 2 6 545
|
||||||
|
52479: 9 8 2 49 7 5 7 9 6 8 89 38
|
||||||
|
472357: 6 1 80 335 6
|
||||||
|
682901: 3 29 34 7 61 33 91 4
|
||||||
|
6885: 1 66 90 553 1 6 288 7
|
||||||
|
263500: 7 2 54 986 250
|
||||||
|
18820675235: 743 9 253 52 34
|
||||||
|
23334339840: 4 1 5 956 5 8 31 4 8 123
|
||||||
|
1188316: 8 495 90 3 45
|
||||||
|
20504591: 201 2 2 46 3 1 7 4 2 3 9 6
|
||||||
|
297797764214235: 297 7 97 76 421 4 235
|
||||||
|
31726289959: 59 36 666 252 89 1 7
|
||||||
|
171645166: 2 383 938 9 197 3 8 30
|
||||||
|
539250093: 345 7 1 98 4 6 31 2 9 4 4
|
||||||
|
151209: 4 6 7 5 5 7 3 84 18 5 4
|
||||||
|
3206065541: 3 62 5 19 35 4 6 3 4 8 9 5
|
||||||
|
43403: 16 27 1 94 9
|
||||||
|
465630: 80 481 830
|
||||||
|
40851: 51 9 89
|
||||||
|
339581134: 1 675 94 578 763 354
|
||||||
|
1287: 918 26 8 335
|
||||||
|
563371816: 8 805 9 9 1 3 4 6 90 76
|
||||||
|
1384644257: 138 46 35 8 8 97 360
|
||||||
|
10150: 6 5 958 7 452 3
|
||||||
|
269082: 885 5 82 5 9 3 7 65 480
|
||||||
|
16754264: 89 1 502 375 5 9
|
||||||
|
146209073461: 7 615 4 2 3 70 8 2 7 7 60
|
||||||
|
640: 1 4 64 1 2
|
||||||
|
138233: 4 520 22 1 8 3 75 854
|
||||||
|
3289616284076: 60 9 1 1 8 8 3 6 9 203 9 2
|
||||||
|
78211049650: 752 26 6 7 9 4 96 50
|
||||||
|
641662: 71 3 619 27 14
|
||||||
|
756121120: 5 7 5 98 893 8 3 6 88 72
|
||||||
|
190920180: 6 9 69 55 486 89 1 22
|
||||||
|
4417: 228 3 5 991 6
|
||||||
|
1223602: 87 4 20 7 2
|
||||||
|
128242248923: 93 7 54 48 6 76 92 3
|
||||||
|
1407: 115 794 498
|
||||||
|
5665725: 757 15 99 65 65
|
||||||
|
649: 6 37 12
|
||||||
|
95292: 584 368 92
|
||||||
|
621075344751: 5 1 1 210 7 5 3 44 4 3 4 8
|
||||||
|
78540605508: 4 3 7 4 3 5 13 2 4 550 8
|
||||||
|
1890: 7 71 2 29 85 7
|
||||||
|
1052: 97 4 656 1 7
|
||||||
|
312089120: 8 39 48 3 3 344 44 5 56
|
||||||
|
618902: 244 634 6 5 2 4 4 62
|
||||||
|
2330433971: 364 64 2 3 3 3 395 6 6 9
|
||||||
|
4560701: 876 30 7 503
|
||||||
|
262: 72 54 98 1 38
|
||||||
|
3513950211: 29 8 7 10 23 7 20 8 9 64
|
||||||
|
131948998: 43 1 1 721 7 304 115 2
|
||||||
|
792500: 3 4 188 7 7 46 2 4 4 2 5 5
|
||||||
|
3906: 431 3 9 1
|
||||||
|
8525440: 9 1 80 82 386 84 56 80
|
||||||
|
9420: 9 5 7 1 65 1 34 36
|
||||||
|
4556893: 7 65 68 93
|
||||||
|
611890240500: 669 849 4 5 9 30 7 114
|
||||||
|
15364411776: 3 7 9 8 60 9 392 12 9 4
|
||||||
|
456237750: 8 28 32 9 44 45 750
|
||||||
|
1081609: 8 4 62 8 34 2 34 1
|
||||||
|
133: 28 90 3 6 6
|
||||||
|
588127471: 715 615 600 2 737
|
||||||
|
9506: 9 50 9
|
||||||
|
664286544: 9 699 95 937 39 4
|
||||||
|
4437: 4 426 8
|
||||||
|
964: 9 58 6
|
||||||
|
4690020: 9 17 7 7 61 7 5 1
|
||||||
|
470716287: 46 9 729 2 587 4 976 7
|
||||||
|
9258: 92 25 4 56 2
|
||||||
|
50672756232: 589 204 900 792 71
|
||||||
|
264130626: 5 2 73 7 2 118 7 7 49 2 6
|
||||||
|
5326: 47 6 1 2 6
|
||||||
|
6206284800: 1 3 656 54 730 80
|
||||||
|
7307052: 4 45 9 9 91 3 76 16 8 2
|
||||||
|
1453: 96 27 84 7 4
|
||||||
|
2963: 98 3 3 16
|
||||||
|
504: 4 8 6 4
|
||||||
|
65453473950: 889 7 242 8 38 4 8
|
||||||
|
1934525: 3 2 3 1 584 92 3 72 3 4 5
|
||||||
|
77778517: 3 640 5 1 4 7 2 6 6 871
|
||||||
|
25133525: 623 2 1 4 6 87 52 5
|
||||||
|
1755293137: 7 538 8 2 6 5 8 2 1 67 5 3
|
||||||
|
4005056: 267 10 5 11 7 3
|
||||||
|
489: 1 9 93 8 379
|
||||||
|
454722246: 5 6 82 7 4 36 3 5 48 5 6 1
|
||||||
|
79547344: 88 989 914 66 30
|
||||||
|
13099520: 5 61 4 5 3 4 7 4 2 1 5 43
|
||||||
|
4458680: 74 7 1 58 2 167 8 681
|
||||||
|
136160: 7 4 154 8 80
|
||||||
|
125: 3 2 4 86 3
|
||||||
|
52991568: 49 5 4 630 843 1 2 4 7 6
|
||||||
|
12739979: 17 4 276 9 49 244 7
|
||||||
|
277290067: 3 5 83 260 300 3 65 1
|
||||||
|
99745: 996 6 1 84
|
||||||
|
601574910: 18 42 698 1 795
|
||||||
|
156084: 6 3 4 5 7 77 74 629 3 5 9
|
||||||
|
117027836800: 5 184 8 115 8 560 7 5
|
||||||
|
337590: 72 2 41 35 2 55
|
||||||
|
14137400200467: 693 51 500 4 97 4 4 67
|
||||||
|
1791503044: 9 622 447 4 8 1 4
|
||||||
|
38271: 424 3 14 1 5 984 12 3
|
||||||
|
6756: 4 538 836 26 9 2 7 703
|
||||||
|
134593: 7 1 5 93 71 2 36 4 841
|
||||||
|
125750882530: 6 933 8 1 93 4 5 2 8 9 7
|
||||||
|
94930992: 11 1 94 8 4 1 7 2 408 39
|
||||||
|
1614: 4 4 214 7 4
|
||||||
|
2645205: 5 21 451 68 37
|
||||||
|
120: 8 52 2
|
||||||
|
7429: 20 4 53 5 28 3 541
|
||||||
|
1546605578: 85 8 6 419 5 4 3 9 7 7 1 7
|
||||||
|
5460: 6 2 6 97 7 3 7
|
||||||
|
1623414: 6 33 9 23 247 388 5 39
|
||||||
|
3141512: 8 615 1 4 638
|
||||||
|
1831517: 56 8 6 681 54 935
|
||||||
|
311326: 99 7 614 81 184
|
||||||
|
5802827578515: 403 238 505 43 605
|
||||||
|
773: 726 1 28 9 9
|
||||||
|
7607050: 5 4 3 5 7 558 4 6 97 4 4 2
|
||||||
|
4917: 48 4 2 64 7 4
|
||||||
|
121451402: 69 696 6 70 2 21 9 2
|
||||||
|
28864528: 42 699 2 338 4
|
||||||
|
19491507084: 77 7 625 3 84 914 84
|
||||||
|
6789125: 5 51 64 416 5
|
||||||
|
43: 4 34 1 5
|
||||||
|
12168: 335 1 34 757 21
|
||||||
|
207655426: 207 65 460 74 7 8 7 1
|
||||||
|
2608735203: 9 2 7 8 9 9 421 8 1 60 7 9
|
||||||
|
636844203: 16 5 19 452 8 44 20 3
|
||||||
|
7880787: 71 932 3 1 14 559 8
|
||||||
|
554491547: 85 7 4 6 90 7 2 81 9 6
|
||||||
|
1108283832: 601 674 36 18 76
|
||||||
|
21412: 5 68 4 7 6 58 609 97
|
||||||
|
117304660: 41 73 77 509 6 5
|
||||||
|
14571768: 113 6 25 5 513
|
||||||
|
13450950: 7 8 8 2 1 2 7 4 8 5 842 9
|
||||||
|
4676209064: 8 7 3 6 58 1 9 9 4 933
|
||||||
|
5265563525: 62 6 852 8 84 5
|
||||||
|
3638552: 7 38 7 897 1 3 78 8
|
||||||
|
254044056: 9 55 1 7 84 7 900 6 68 7
|
||||||
|
105408: 17 4 627 9 8
|
||||||
|
1793691533882: 574 90 8 906 1 39 9 4
|
||||||
|
65565: 715 5 18 463 6 79 9
|
||||||
|
54255702: 897 1 8 8 7 1 38 135 7 5
|
||||||
|
1387116: 8 6 7 7 8 44 6 3 963 727
|
||||||
|
316960839767: 387 91 871 9 766
|
||||||
|
1782: 5 154 8 990 14
|
||||||
|
803962: 7 901 138 6 2
|
||||||
|
420253599: 54 9 206 257 7 2 1 9 3 1
|
||||||
|
673728381163: 11 4 660 8 13 29 4 160
|
||||||
|
130275: 8 68 5 416 135
|
||||||
|
8605: 26 3 9 6 1 27 1 6 6 494 5
|
||||||
|
9423: 93 5 2 851 9
|
||||||
|
291: 9 236 2 44
|
||||||
|
4925376: 6 5 9 77 8 1 93
|
||||||
|
447661712477: 2 1 610 17 5 1 62 3 7 2 4
|
||||||
|
11385: 166 41 55
|
||||||
|
2396: 8 156 5 901 675
|
||||||
|
7555485: 88 92 2 933 8 43
|
||||||
|
98852355: 3 14 9 7 965 67 4 7 441
|
||||||
|
45373925520: 8 4 4 6 421 1 5 396 6 6 7
|
||||||
|
3852186680: 99 93 96 647 640 439
|
||||||
|
516188945046: 775 7 723 78 5 59 7 2
|
||||||
|
16401: 67 4 7 9 7 9 6 9 175 1 25
|
||||||
|
211540826: 675 8 8 6 865 48 24
|
||||||
|
999815: 921 8 778 43 82 4 6 80
|
||||||
|
20460339: 890 237 97 59 70
|
||||||
|
86357: 952 6 3 1 66 9
|
||||||
|
2306987: 99 7 51 55 8 22
|
||||||
|
1432751: 17 30 28 22 47 37
|
||||||
|
5272: 236 45 16 76 7 1 25 2
|
||||||
|
26384486: 39 224 84 475 14
|
||||||
|
24715754: 80 557 97 1 3 8 5 9 1 24
|
||||||
|
4536: 4 785 4 360 319 713
|
||||||
|
55339200: 5 7 36 12 5 21 1 183 5 1
|
||||||
|
73732059198: 4 9 11 906 7 7 14 3 699
|
||||||
|
11785692665: 5 7 79 11 2 336 73 977
|
||||||
|
92506: 4 7 20 84 5 6 9 91
|
||||||
|
5228: 52 2 8
|
||||||
|
5240069348: 8 131 500 3 66 345 3
|
||||||
|
7656204532: 7 77 235 24 204 532
|
||||||
|
507690334: 23 823 6 903 34
|
||||||
|
152484: 9 3 6 343 2 713 3 1 6
|
||||||
|
21576094: 586 193 490 1 82 17
|
||||||
|
5036130: 333 1 333 682 343 45
|
||||||
|
772: 4 45 3 4 40
|
||||||
|
18599805: 3 4 49 1 1 6 37 4 142 75
|
||||||
|
2344: 30 246 21 289 4
|
||||||
|
54678825468: 9 7 9 1 1 3 1 82 9 7 4 324
|
||||||
|
2332355134: 134 170 4 20 7 959 4
|
||||||
|
4031694373: 6 3 30 7 478 78 2 9 373
|
||||||
|
216365: 7 49 8 7 44 4 2 47 2 42 1
|
||||||
|
828881432: 225 5 759 493 17 5 32
|
||||||
|
2829: 3 13 177
|
||||||
|
77069560740: 7 64 6 686 9 60 7 40
|
||||||
|
102664: 347 5 5 59 2
|
||||||
|
87813: 8 78 13
|
||||||
|
279108: 6 9 49 40 487 571 92
|
||||||
|
71831: 1 5 8 15 1 85 2 2 79 3 4 6
|
||||||
|
12536652: 8 7 4 9 4 37 7 9 857 6
|
||||||
|
18334976: 3 1 744 383 64
|
||||||
|
319056: 1 280 9 23 8 6
|
||||||
|
50997665: 893 4 2 163 2 16 174 5
|
||||||
|
23910075: 849 8 542 305 1 313 5
|
||||||
|
564033510: 2 4 978 573 201 501 6
|
||||||
|
78185: 77 44 65 4 91
|
||||||
|
2408327: 78 325 95 27 50
|
||||||
|
6847167235786: 175 59 9 64 1 677 84 1
|
||||||
|
676192027: 38 5 2 5 95 704 1 20 7
|
||||||
|
9210625: 97 2 5 1 8 8 369 3 6 71 5
|
||||||
|
149467508: 5 5 44 29 9 4 2 3 39 5 2 7
|
||||||
|
2881560: 4 548 97 74 60
|
||||||
|
705581: 4 8 9 5 47 5 457 19 11
|
||||||
|
7099352: 307 47 123 71 4
|
||||||
|
105596: 8 4 2 48 5 6 615 3 8 63
|
||||||
|
1916395393: 3 8 93 53 450 4 21 9 3 1
|
||||||
|
3046752: 728 5 837 8 64
|
||||||
|
839964507: 8 82 22 8 1 4 2 3 3 55 2
|
||||||
|
62763803899: 73 359 8 53 82 29 50
|
||||||
|
26038272: 39 329 2 962 978
|
||||||
|
34544966004: 48 58 645 79 6 9
|
||||||
|
1091857: 9 131 89 9 7 86
|
||||||
|
8739163: 174 78 5 1 63
|
||||||
|
1931023586: 8 2 681 3 8 556 42 2
|
||||||
|
50110335881: 50 3 492 2 679 55 26
|
||||||
|
18450800: 2 3 558 4 23 46 44 4 4
|
||||||
|
170480169: 213 5 1 5 8 50 6 6 4 121
|
||||||
|
1583191718: 22 29 124 20 951 718
|
||||||
|
58278300: 5 30 77 901 8 3 1 537 3
|
||||||
|
19954019936: 46 597 974 28 746
|
||||||
|
47835: 7 5 339 1 4 375
|
||||||
|
2950614: 3 1 8 4 24 5 8 3 4 657 3 9
|
||||||
|
20218418039376: 8 733 560 99 9 9 29 16
|
||||||
|
593645: 9 9 842 5 94 9 3 86 4 1 5
|
||||||
|
9756318: 9 75 6 3 10 8
|
||||||
|
81682: 1 816 84
|
||||||
|
16349319245: 510 1 7 61 8 441 811 4
|
||||||
|
563: 2 38 298 222 3
|
||||||
|
202257905: 1 7 3 3 748 9 8 5 5 8 5 5
|
||||||
|
611: 2 36 7 8 2 24 7 66
|
||||||
|
3052838376: 86 39 8 76 714 423
|
||||||
|
24102208: 80 3 40 300 208
|
||||||
|
101249729: 775 82 4 29 1 45
|
||||||
|
251037: 597 7 60 297 1
|
||||||
|
5135827: 73 3 4 8 3 7 7 642 752
|
||||||
|
765688962: 10 755 6 889 62
|
||||||
|
46054478: 3 11 392 32 78
|
||||||
|
3046741074: 5 15 6 9 7 31 4 1 6 1 79 6
|
||||||
|
78426872: 303 123 23 3 92 2
|
||||||
|
105615620898: 808 840 247 5 8 14 63
|
||||||
|
7246: 9 724 48 5 7 2 9 71 20
|
||||||
|
411185: 45 30 57 51 282 29
|
||||||
|
49916614734: 6 26 799 19 7 2 9 7 233
|
||||||
|
20991601: 490 595 72 4
|
||||||
|
162000: 9 5 6 66 45 24
|
||||||
|
2376465: 6 74 5 7 586 7 7 5 91
|
||||||
|
12886208: 3 728 2 6 4 83 976 72 8
|
||||||
|
2260: 2 481 6 14 9 53 4
|
||||||
|
2619488: 68 9 886 2 8 872
|
||||||
|
55508933: 1 76 658 6 5 1 37 1 15 1
|
||||||
|
622441037: 8 40 741 921 76 38 2
|
||||||
|
746784739: 9 7 5 7 857 85 38 201
|
||||||
|
42583: 42 240 58 276 9
|
||||||
|
2095256607: 301 348 6 16 867 20 7
|
||||||
|
30464656500: 952 32 656 236 264
|
||||||
|
5482964: 1 781 5 17 8 7 4
|
||||||
|
25593445: 30 5 69 9 7 2 4 4 47 6 2 4
|
||||||
|
89866350: 255 80 659 91 607 7
|
||||||
|
1056968220: 7 10 3 3 1 9 9 8 3 13 70 6
|
||||||
|
2310: 62 8 33
|
||||||
|
1235556740811: 1 68 6 6 5 80 8 738 49 5
|
||||||
|
101463: 7 1 93 463
|
||||||
|
1103257: 6 70 583 7 88
|
||||||
|
8416: 24 310 663 48 265
|
||||||
|
13214: 55 9 6 675 4
|
||||||
|
694039781: 2 61 8 9 163 83 9 8 3 81
|
||||||
|
16108: 2 3 1 2 82 1 6 4 5 9 6 344
|
||||||
|
258732964: 3 3 36 77 2 3 1 1 4 4 4
|
||||||
|
18318720000: 8 940 1 7 5 800 87
|
||||||
|
73183536: 6 9 812 21 905 7 958 4
|
||||||
|
3324894013: 52 160 664 67 96 541
|
||||||
|
95257: 81 7 6 28 1
|
||||||
|
57837: 33 581 97 9 3
|
||||||
|
662694: 4 354 6 78 2 4
|
||||||
|
2364889710: 399 1 6 8 2 343 4 9 4 6 5
|
||||||
|
8610262887: 8 608 2 262 887
|
||||||
|
3529: 34 20 6 94 9
|
||||||
|
23103: 39 52 22 517 9
|
||||||
|
425555: 33 5 17 3 23 54
|
||||||
|
269307: 49 687 8 2 1
|
||||||
|
9831334502: 60 687 25 9 90 2
|
||||||
|
10570: 5 8 7 816 12
|
||||||
|
23328: 43 2 54
|
||||||
|
1405963584: 3 784 34 5 64 279
|
||||||
|
512336794: 9 635 5 7 781 7 9 4
|
||||||
|
44419: 91 703 55 189 560
|
||||||
|
24226: 2 33 973 6 8 4 2 1
|
||||||
|
53087944496: 88 3 542 5 23 96 371 6
|
||||||
|
14463656829960: 6 762 76 61 754 465
|
||||||
|
1543514: 92 4 2 926 6 4 17 5 623
|
||||||
|
108444: 500 83 93 3 2
|
||||||
|
5081: 4 89 5 2 7 5 5 2 6 806 3
|
||||||
|
41042792: 5 4 472 9 69 53 963 7
|
||||||
|
59919316: 49 10 919 310 6
|
||||||
|
78366193: 9 76 179 8 77 80 993
|
||||||
|
43544528825: 8 779 496 68 88 25
|
||||||
|
209352887: 89 961 95 71 7 349 2
|
||||||
|
17102646: 14 5 300 3 2 645
|
||||||
|
1759905302: 166 4 872 4 8 371 22
|
||||||
|
25339311: 620 83 328 406 445
|
||||||
|
13384271114: 5 5 8 13 2 4 5 41 7 53 13
|
||||||
|
2267301: 1 63 5 1 14 4 9 8 3 5 32 5
|
||||||
|
157516: 2 6 71 46 3 67 13 743
|
||||||
|
42511987: 604 2 31 7 940 49
|
||||||
|
8559129600: 44 304 50 4 427 72 4
|
||||||
|
3554208: 92 37 8 6 14 41
|
||||||
|
11856636: 52 95 6 6 3 3 58 35 4
|
||||||
|
7040454: 8 368 87 8 198 2 16 9 6
|
||||||
|
67075662080: 4 88 9 96 6 5 256 973
|
||||||
|
15365: 9 210 5 7
|
||||||
|
3522050: 77 625 57 145 9 32
|
||||||
|
143451167: 13 43 736 69 1 67
|
||||||
|
6000: 1 2 73 5 3 5 6 643 9 7 7 5
|
||||||
|
2634: 1 4 75 4 8 136 66
|
||||||
|
19507917513: 9 7 50 3 6 71 4 5 35 4 5 7
|
||||||
|
6195: 1 861 7 17 143
|
||||||
|
25405216: 3 93 8 27 3 5 6 2 1 6 9 16
|
||||||
|
658362315382: 2 351 635 9 62 7 7 2
|
||||||
|
24025: 66 630 79 31 1
|
||||||
|
5988: 527 7 593 38 6 74
|
||||||
|
1161183: 5 4 66 2 7 29 9 95 7 86
|
||||||
|
2143980333: 31 9 4 8 3 7 79 3 3 29 4
|
||||||
|
271600187810: 3 2 8 500 8 2 682 1 2 5 7
|
||||||
|
179937160: 7 465 4 586 65
|
||||||
|
883238: 5 83 3 144 94
|
||||||
|
236603: 234 1 164 790 648
|
||||||
|
45930082: 416 8 3 24 56 46
|
||||||
|
361: 44 78 218 14 7
|
||||||
|
7561056: 5 193 6 328 113 1
|
||||||
|
40701528: 21 36 997 6 9
|
||||||
|
29834957064: 6 50 218 2 9 8 88 7 9 3 4
|
||||||
|
162471582: 84 69 2 514 66 5 9 78
|
||||||
|
182397: 9 2 23 86 9
|
||||||
|
90664089: 3 488 983 63 33
|
||||||
|
254720133: 3 24 446 4 879
|
||||||
|
123643412: 2 14 1 3 60 637 85 6 9 3
|
||||||
|
4229339058: 51 831 625 223 441
|
||||||
|
61828439176: 5 76 640 3 5 4 1 7 599 5
|
||||||
|
11346604843: 3 7 2 223 1 3 4 8 3 6 8 45
|
||||||
|
5410078: 4 78 22 658 2
|
||||||
|
2244856: 22 447 65 1 91
|
||||||
|
194054: 437 7 9 38 62 91 7
|
||||||
|
7160807: 8 51 24 196 69 86 17
|
||||||
|
3121986: 37 98 861
|
||||||
|
1990763: 71 57 486 4 3 5 6 45 53
|
||||||
|
447665088: 3 8 776 43 559
|
||||||
|
165253: 3 18 60 84 253
|
||||||
|
181939844395: 963 664 43 1 472 4 9
|
||||||
|
876727800: 7 5 8 5 524 1 45 3 90 52
|
||||||
|
1210995: 52 4 4 2 66 849 7 1 6 3 6
|
||||||
|
189588141: 4 337 6 190 6 94 3 7 14
|
||||||
|
24355: 67 428 1 46 956 620 9
|
||||||
|
14661: 3 98 1 2 2 6 2 90 453 2 4
|
||||||
|
733201324719: 1 676 502 7 9 9 46 67 1
|
||||||
|
76566: 5 17 6 39 4 14 7
|
||||||
|
1840710690: 827 5 19 88 29 78 315
|
||||||
|
118727441423: 8 9 3 12 4 849 768 37 5
|
||||||
|
361804580: 719 2 2 125 29 86 1
|
||||||
|
3391065514: 1 200 26 1 7 884 651 4
|
||||||
|
39168: 934 42 3 2 4
|
||||||
|
1015196283: 194 821 18 6 1 10 283
|
||||||
|
1202295: 1 4 711 2 6 7 3 3 6 409 8
|
||||||
|
2620: 88 764 9 92 726 941
|
||||||
|
2915490003: 247 11 34 24 733 447
|
||||||
|
121934120: 6 796 322 91 8 59
|
||||||
|
857710: 420 1 5 8 5 3 7 8 842 7
|
||||||
|
215: 4 3 3 48 157
|
||||||
|
378639: 418 1 158 25 7 6 3 1 5 4
|
||||||
|
731698: 95 876 48 359 2 56
|
||||||
|
2012249: 515 3 7 1 4 36 9 3 3 776
|
||||||
|
1207856: 8 298 9 1 4 8 7 706 4 2
|
||||||
|
360: 5 8 9
|
||||||
|
337610: 7 80 918 9 2 599 1 35
|
||||||
|
7436787992: 4 50 205 8 4 876 207 8
|
||||||
|
412920: 6 783 6 6 87 60
|
||||||
|
13925: 6 7 3 6 1 419 3 5
|
||||||
|
13777486: 7 8 6 7 31 2 2 4 3 64 398
|
||||||
|
4427820206: 779 668 60 51 206
|
||||||
|
1177848: 798 8 783 7 738
|
||||||
|
40484341: 2 742 682 2 4 5 5 6 790
|
||||||
|
1921228890: 48 236 8 212 90
|
||||||
|
23256164: 238 2 51 19 5 4 4 20 4
|
||||||
|
16124: 3 34 5 4 707 96 3 4 51 4
|
||||||
|
7380844: 6 4 2 540 562 2 3 836 6
|
||||||
|
15190: 78 1 67 9 98
|
||||||
|
738150: 1 82 2 6 4 8 87 7 52 5 95
|
||||||
|
2716245: 7 978 645 9 35
|
||||||
|
557670792: 28 537 21 245 91 47
|
||||||
|
487: 296 72 90 9 20
|
||||||
|
11412362: 9 470 5 7 340 262
|
||||||
|
292852: 6 360 8 44 8
|
||||||
|
1591130113: 2 3 5 9 6 8 66 88 416 4 1
|
||||||
|
123867174: 3 8 8 96 7 4 6 8 5 1 4 290
|
||||||
|
1487: 85 88 655 606 53
|
||||||
|
4335142: 67 15 173 34 2 9 5
|
||||||
|
1650: 3 9 55 5 85 75
|
||||||
|
467739: 2 9 67 387 1 2 653 361
|
||||||
|
972474: 2 1 1 5 7 3 1 17 51 7 3
|
||||||
|
13997123: 62 125 86 3 75 6 7 56
|
||||||
|
1073: 953 68 52
|
||||||
|
392496: 7 27 531 39 8
|
||||||
|
1552320: 88 7 63 8 5
|
||||||
|
150359: 8 3 99 138 2 71 4
|
||||||
|
27306116366256: 972 440 9 37 38 312
|
||||||
|
3087758: 43 6 7 9 761
|
||||||
|
1359414: 9 19 1 9 314 79 7 93 6 7
|
||||||
|
3511: 1 2 5 5 4 6 408 7 1 49 2 1
|
||||||
|
1519753975: 5 969 9 2 4 4 1 9 3 4 652
|
||||||
|
4962043800: 17 72 6 98 4 567 235
|
||||||
|
713: 3 8 6 2 5 8 9 16 631 23 2
|
||||||
|
330806768: 59 3 8 8 62 4 7 8 7 7 1 68
|
||||||
|
3129984840: 6 8 882 2 6 44 6 3 4 9 5 8
|
||||||
|
9598397: 8 9 942 839 5
|
||||||
|
59508203: 5 85 56 2 3 3 5 5 3 25 2
|
||||||
|
732275: 63 6 385 8 66 847 4 5
|
||||||
|
1102: 98 177 2 1 2
|
||||||
|
2348312: 15 5 9 62 5 9 1 69 7 8 8
|
||||||
|
396951061159: 441 9 5 10 56 5 1 57
|
||||||
|
6953694: 6 952 8 2 86 1 4 1
|
||||||
|
692000: 6 19 682 7 2 925 10 5 8
|
||||||
|
2532487: 20 5 324 7 4 13
|
||||||
|
729354390: 6 50 838 6 74 2 7 5 8 3 6
|
||||||
|
4302: 4 80 2 50 2
|
||||||
|
295129889: 316 2 768 35 608
|
||||||
|
12765102409: 797 81 8 893 7 4 4 6
|
||||||
|
20661: 50 1 2 8 1 8 7 2 6 3 200 4
|
||||||
|
139749288: 83 2 3 334 36 7 5 4 3 24
|
||||||
|
10705351395: 3 929 8 519 2 192 99
|
||||||
|
51524659: 159 6 54 34 5 823 5 33
|
||||||
|
248123: 82 49 15 2 653
|
||||||
|
596338: 1 4 4 910 625 6 1 7 78
|
||||||
|
313140: 52 190 6
|
||||||
|
5366: 6 7 33 116 30
|
||||||
|
24097: 907 85 3 1 3 11 1 8 129
|
||||||
|
8246068: 82 45 4 85 583
|
||||||
|
17503168: 587 877 1 34 2
|
||||||
|
84655465: 3 328 7 50 89 281
|
||||||
|
11112385: 24 7 24 33 427 2 5
|
||||||
|
200828160: 468 960 149 3
|
||||||
|
969669: 15 1 8 6 226 9 79 34 23
|
||||||
|
7322887248072: 61 8 5 9 620 4 6 9 6 5 72
|
||||||
|
21805788: 8 756 9 4 5 6 5 73 9 7 9 6
|
||||||
|
3368004965: 11 22 668 3 965
|
||||||
|
191964102: 1 75 1 2 56 425 3 9 4 1 8
|
||||||
|
229452893: 539 43 99 5 93
|
||||||
|
1750029: 635 7 5 3 393
|
||||||
|
5224824: 924 3 6 56 23
|
||||||
|
129416: 191 9 36 36 65
|
||||||
|
2385184: 32 83 898 1 90 6
|
||||||
|
290964124306: 299 222 67 748 13
|
||||||
|
1236001: 454 18 5 37 70 519 52
|
||||||
|
15177419: 43 7 63 7 4 7 200 9 9 1
|
||||||
|
11411: 8 30 46 1 151 214 5 1
|
||||||
|
1790059: 447 4 1 4 59
|
||||||
|
24755916: 44 2 4 1 4 4 3 944 543
|
||||||
|
12739803835: 348 5 93 10 653 695
|
||||||
|
658319: 52 483 5 3 3 1 82 8 6 6 3
|
||||||
|
1054275964: 971 18 3 60 7 658 9 70
|
||||||
|
46408869891: 65 5 996 9 59 6 5 99 9
|
||||||
|
206861450: 881 1 4 60 393 557 5
|
||||||
|
2330889: 8 1 80 215 1 10 1 83 3
|
||||||
|
743694786: 3 841 8 583 9 9 26 56 2
|
||||||
|
274066801: 3 6 7 78 469 5 237 8 7 7
|
||||||
|
5297771: 298 1 8 7 8 77 2 9 8 2 27
|
||||||
|
439440: 2 1 15 3 300 2 9 5 907 8
|
||||||
|
48: 2 6 30 6
|
||||||
|
297254952: 5 7 36 1 940 6 732
|
||||||
|
314960685: 729 6 434 72 564 873
|
||||||
|
153151149060: 782 59 19 67 2 79 35 6
|
||||||
|
11811000: 19 6 767 87 423 600
|
||||||
|
7616092: 8 264 875 32 92
|
||||||
|
73684588: 1 72 68 3 349 331 908
|
||||||
|
43753200: 44 2 714 606 95
|
||||||
|
445628: 301 5 74 445 5 331 28
|
||||||
|
109997568: 6 4 9 584 327
|
||||||
|
506355: 98 490 861 87
|
||||||
|
5285667: 5 185 469 75 1 1 3 6 8 3
|
||||||
|
4124: 787 777 2 990 6
|
||||||
|
2296: 6 3 52 53 3 19 6 9 699
|
||||||
|
818730: 3 3 6 66 827
|
||||||
|
2441: 7 95 9 38 53 4 6 2 813
|
||||||
|
4517856: 4 35 51 6 63 747
|
||||||
|
4342: 8 3 7 25 8 2 27 6 9 24 5 7
|
||||||
|
128806662808: 19 5 5 23 9 696 8 131
|
||||||
|
303754266816: 664 14 9 22 546 272
|
||||||
|
31091671: 6 5 2 825 9 157 4 19
|
||||||
|
4239694: 6 9 3 28 2 20 8 5 3 2 409
|
||||||
|
120134644: 51 7 558 5 4 937 28
|
||||||
|
1055661: 9 2 2 58 61
|
||||||
|
47501: 89 840 1 9 644 30 11 1
|
50
y2024/resources/8_input.txt
Normal file
50
y2024/resources/8_input.txt
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
....K..........................8.................z
|
||||||
|
.....n..............r...........z.................
|
||||||
|
.......................w....8.............3...E...
|
||||||
|
.....Q.....U..4.........8.........................
|
||||||
|
...............rc...w........i....................
|
||||||
|
...........K.........i..2.........................
|
||||||
|
..................4.....i.........................
|
||||||
|
K.....n....................w...........z..........
|
||||||
|
..U......Q........................I...............
|
||||||
|
..........i.....I.....Q....g....................5E
|
||||||
|
..Q......................................5........
|
||||||
|
..........c............8......w...g..........5....
|
||||||
|
.............................I.O..................
|
||||||
|
.Z.............4....b.....................k.......
|
||||||
|
..n........4......r..g..6..c.............3........
|
||||||
|
....Z............c................................
|
||||||
|
...................................x..............
|
||||||
|
.......................................O..........
|
||||||
|
...............U...................E..........5...
|
||||||
|
.....f..........................OI3......k........
|
||||||
|
..m.......o......F.......R........x...............
|
||||||
|
m...........o..v6..3...............X..............
|
||||||
|
..............H6v.....F.g.....................W...
|
||||||
|
...........o....Fb....v...............E...........
|
||||||
|
...Z.............a................................
|
||||||
|
......U6.............V............................
|
||||||
|
.9.............b..............pTk.................
|
||||||
|
.......m........V.........H1....x.................
|
||||||
|
...m.................H....................MX......
|
||||||
|
............t.a............H......................
|
||||||
|
........Z...a............v.....1..T..p.W..X.......
|
||||||
|
.............................9...x.......p........
|
||||||
|
.....J.....................V..1................0..
|
||||||
|
...........r..j..........a............pT..........
|
||||||
|
.G..................J...N......f..................
|
||||||
|
...........G......T....B........W.e...........M...
|
||||||
|
..........j.............Rk.............M..........
|
||||||
|
.........q.............MB......R.F..1..P....X...f.
|
||||||
|
............................V....o...........h....
|
||||||
|
...........................................W......
|
||||||
|
......b......u............................e.......
|
||||||
|
.............................................0....
|
||||||
|
..CA....Gt..O........................7.....e....0.
|
||||||
|
C.u......A..9J..N........................h.....e..
|
||||||
|
uj....q..........N.2..................7...........
|
||||||
|
G....N.....uJ...............................0.....
|
||||||
|
.................B................P.......h.......
|
||||||
|
...C....q...........R.........P...................
|
||||||
|
.....q..tC....2.9.....B............P....f.........
|
||||||
|
...............2.................................7
|
1
y2024/resources/9_input.txt
Normal file
1
y2024/resources/9_input.txt
Normal file
File diff suppressed because one or more lines are too long
20
y2024/src/bin/d10.rs
Normal file
20
y2024/src/bin/d10.rs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
use std::fs;
|
||||||
|
|
||||||
|
use y2024::days::d10;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
part1();
|
||||||
|
part2();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part1() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/10_input.txt")).unwrap();
|
||||||
|
println!("{}", d10::process_part1(&content));
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/10_input.txt")).unwrap();
|
||||||
|
println!("{}", d10::process_part2(&content));
|
||||||
|
}
|
20
y2024/src/bin/d3.rs
Normal file
20
y2024/src/bin/d3.rs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
use std::fs;
|
||||||
|
|
||||||
|
use y2024::days::d3;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
part1();
|
||||||
|
part2();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part1() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/3_input.txt")).unwrap();
|
||||||
|
println!("{}", d3::process_part1(&content));
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/3_input.txt")).unwrap();
|
||||||
|
println!("{}", d3::process_part2(&content));
|
||||||
|
}
|
20
y2024/src/bin/d4.rs
Normal file
20
y2024/src/bin/d4.rs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
use std::fs;
|
||||||
|
|
||||||
|
use y2024::days::d4;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
part1();
|
||||||
|
part2();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part1() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/4_input.txt")).unwrap();
|
||||||
|
println!("{}", d4::process_part1(&content));
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/4_input.txt")).unwrap();
|
||||||
|
println!("{}", d4::process_part2(&content));
|
||||||
|
}
|
20
y2024/src/bin/d5.rs
Normal file
20
y2024/src/bin/d5.rs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
use std::fs;
|
||||||
|
|
||||||
|
use y2024::days::d5;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
part1();
|
||||||
|
part2();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part1() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/5_input.txt")).unwrap();
|
||||||
|
println!("{}", d5::process_part1(&content));
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/5_input.txt")).unwrap();
|
||||||
|
println!("{}", d5::process_part2(&content));
|
||||||
|
}
|
20
y2024/src/bin/d6.rs
Normal file
20
y2024/src/bin/d6.rs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
use std::fs;
|
||||||
|
|
||||||
|
use y2024::days::d6;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
part1();
|
||||||
|
part2();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part1() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/6_input.txt")).unwrap();
|
||||||
|
println!("{}", d6::process_part1(&content));
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/6_input.txt")).unwrap();
|
||||||
|
println!("{}", d6::process_part2(&content));
|
||||||
|
}
|
20
y2024/src/bin/d7.rs
Normal file
20
y2024/src/bin/d7.rs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
use std::fs;
|
||||||
|
|
||||||
|
use y2024::days::d7;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
part1();
|
||||||
|
part2();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part1() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/7_input.txt")).unwrap();
|
||||||
|
println!("{}", d7::process_part1(&content));
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/7_input.txt")).unwrap();
|
||||||
|
println!("{}", d7::process_part2(&content));
|
||||||
|
}
|
20
y2024/src/bin/d8.rs
Normal file
20
y2024/src/bin/d8.rs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
use std::fs;
|
||||||
|
|
||||||
|
use y2024::days::d8;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
part1();
|
||||||
|
part2();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part1() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/8_input.txt")).unwrap();
|
||||||
|
println!("{}", d8::process_part1(&content));
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/8_input.txt")).unwrap();
|
||||||
|
println!("{}", d8::process_part2(&content));
|
||||||
|
}
|
20
y2024/src/bin/d9.rs
Normal file
20
y2024/src/bin/d9.rs
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
use std::fs;
|
||||||
|
|
||||||
|
use y2024::days::d9;
|
||||||
|
|
||||||
|
fn main() {
|
||||||
|
part1();
|
||||||
|
part2();
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part1() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/9_input.txt")).unwrap();
|
||||||
|
println!("{}", d9::process_part1(&content));
|
||||||
|
}
|
||||||
|
|
||||||
|
fn part2() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/9_input.txt")).unwrap();
|
||||||
|
println!("{}", d9::process_part2(&content));
|
||||||
|
}
|
332
y2024/src/days/d10.rs
Normal file
332
y2024/src/days/d10.rs
Normal file
@ -0,0 +1,332 @@
|
|||||||
|
use itertools::Itertools;
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Copy, Default, Hash, PartialEq, Eq)]
|
||||||
|
struct TrailTile {
|
||||||
|
coords: (i32, i32),
|
||||||
|
height: u8,
|
||||||
|
up: Option<bool>,
|
||||||
|
down: Option<bool>,
|
||||||
|
left: Option<bool>,
|
||||||
|
right: Option<bool>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl TrailTile {
|
||||||
|
fn get_neighbors(&self, map: &[Vec<TrailTile>]) -> Vec<TrailTile> {
|
||||||
|
let mut neighbors = Vec::new();
|
||||||
|
if let Some(up) = self.up {
|
||||||
|
if up {
|
||||||
|
let neighbor = map[self.coords.1 as usize - 1][self.coords.0 as usize];
|
||||||
|
if neighbor.height == self.height + 1 {
|
||||||
|
neighbors.push(neighbor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if let Some(down) = self.down {
|
||||||
|
if down {
|
||||||
|
let neighbor = map[self.coords.1 as usize + 1][self.coords.0 as usize];
|
||||||
|
if neighbor.height == self.height + 1 {
|
||||||
|
neighbors.push(neighbor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if let Some(left) = self.left {
|
||||||
|
if left {
|
||||||
|
let neighbor = map[self.coords.1 as usize][self.coords.0 as usize - 1];
|
||||||
|
if neighbor.height == self.height + 1 {
|
||||||
|
neighbors.push(neighbor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if let Some(right) = self.right {
|
||||||
|
if right {
|
||||||
|
let neighbor = map[self.coords.1 as usize][self.coords.0 as usize + 1];
|
||||||
|
if neighbor.height == self.height + 1 {
|
||||||
|
neighbors.push(neighbor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
neighbors
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn process_part1(input: &str) -> i32 {
|
||||||
|
let map = input
|
||||||
|
.lines()
|
||||||
|
.enumerate()
|
||||||
|
.map(|(yidx, line)| {
|
||||||
|
line.as_bytes()
|
||||||
|
.iter()
|
||||||
|
.enumerate()
|
||||||
|
.map(|(xidx, &height)| TrailTile {
|
||||||
|
coords: (xidx as i32, yidx as i32),
|
||||||
|
height,
|
||||||
|
..Default::default()
|
||||||
|
})
|
||||||
|
.collect_vec()
|
||||||
|
})
|
||||||
|
.collect_vec();
|
||||||
|
let mut updated_map = Vec::new();
|
||||||
|
let mut trailheads = Vec::new();
|
||||||
|
for row in map.iter() {
|
||||||
|
let mut new_row = Vec::new();
|
||||||
|
for tile in row {
|
||||||
|
let up = match map.get((tile.coords.1 - 1) as usize) {
|
||||||
|
Some(row) => {
|
||||||
|
let up = row[tile.coords.0 as usize];
|
||||||
|
Some(up.height == tile.height + 1)
|
||||||
|
}
|
||||||
|
None => None,
|
||||||
|
};
|
||||||
|
let down = match map.get((tile.coords.1 + 1) as usize) {
|
||||||
|
Some(row) => {
|
||||||
|
let down = row[tile.coords.0 as usize];
|
||||||
|
Some(down.height == tile.height + 1)
|
||||||
|
}
|
||||||
|
None => None,
|
||||||
|
};
|
||||||
|
let left = map[tile.coords.1 as usize]
|
||||||
|
.get((tile.coords.0 - 1) as usize)
|
||||||
|
.map(|left| left.height == tile.height + 1);
|
||||||
|
let right = map[tile.coords.1 as usize]
|
||||||
|
.get((tile.coords.0 + 1) as usize)
|
||||||
|
.map(|right| right.height == tile.height + 1);
|
||||||
|
let tile = TrailTile {
|
||||||
|
up,
|
||||||
|
down,
|
||||||
|
left,
|
||||||
|
right,
|
||||||
|
..*tile
|
||||||
|
};
|
||||||
|
if tile.height == b'0' {
|
||||||
|
trailheads.push(tile);
|
||||||
|
}
|
||||||
|
//print!(
|
||||||
|
// "{}: {}, {} ",
|
||||||
|
// tile.height as char, tile.coords.0, tile.coords.1
|
||||||
|
//);
|
||||||
|
new_row.push(tile);
|
||||||
|
}
|
||||||
|
//println!();
|
||||||
|
updated_map.push(new_row);
|
||||||
|
}
|
||||||
|
let mut res = 0;
|
||||||
|
//println!("0 {trailheads:?}");
|
||||||
|
for trailhead in trailheads {
|
||||||
|
let mut neighbors = trailhead.get_neighbors(&updated_map);
|
||||||
|
//println!("1 {neighbors:?}");
|
||||||
|
for _idx in 2..=9 {
|
||||||
|
//println!("{idx}");
|
||||||
|
if neighbors.is_empty() {
|
||||||
|
//println!("empty");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
let inner_neighbors = neighbors.clone();
|
||||||
|
neighbors.clear();
|
||||||
|
for neighbor in inner_neighbors {
|
||||||
|
neighbors.extend_from_slice(&neighbor.get_neighbors(&updated_map));
|
||||||
|
}
|
||||||
|
//println!("{idx} {neighbors:?}");
|
||||||
|
}
|
||||||
|
res += neighbors.iter().unique().count();
|
||||||
|
}
|
||||||
|
res as i32
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn process_part2(input: &str) -> i32 {
|
||||||
|
let map = input
|
||||||
|
.lines()
|
||||||
|
.enumerate()
|
||||||
|
.map(|(yidx, line)| {
|
||||||
|
line.as_bytes()
|
||||||
|
.iter()
|
||||||
|
.enumerate()
|
||||||
|
.map(|(xidx, &height)| TrailTile {
|
||||||
|
coords: (xidx as i32, yidx as i32),
|
||||||
|
height,
|
||||||
|
..Default::default()
|
||||||
|
})
|
||||||
|
.collect_vec()
|
||||||
|
})
|
||||||
|
.collect_vec();
|
||||||
|
let mut updated_map = Vec::new();
|
||||||
|
let mut trailheads = Vec::new();
|
||||||
|
for row in map.iter() {
|
||||||
|
let mut new_row = Vec::new();
|
||||||
|
for tile in row {
|
||||||
|
let up = match map.get((tile.coords.1 - 1) as usize) {
|
||||||
|
Some(row) => {
|
||||||
|
let up = row[tile.coords.0 as usize];
|
||||||
|
Some(up.height == tile.height + 1)
|
||||||
|
}
|
||||||
|
None => None,
|
||||||
|
};
|
||||||
|
let down = match map.get((tile.coords.1 + 1) as usize) {
|
||||||
|
Some(row) => {
|
||||||
|
let down = row[tile.coords.0 as usize];
|
||||||
|
Some(down.height == tile.height + 1)
|
||||||
|
}
|
||||||
|
None => None,
|
||||||
|
};
|
||||||
|
let left = map[tile.coords.1 as usize]
|
||||||
|
.get((tile.coords.0 - 1) as usize)
|
||||||
|
.map(|left| left.height == tile.height + 1);
|
||||||
|
let right = map[tile.coords.1 as usize]
|
||||||
|
.get((tile.coords.0 + 1) as usize)
|
||||||
|
.map(|right| right.height == tile.height + 1);
|
||||||
|
let tile = TrailTile {
|
||||||
|
up,
|
||||||
|
down,
|
||||||
|
left,
|
||||||
|
right,
|
||||||
|
..*tile
|
||||||
|
};
|
||||||
|
if tile.height == b'0' {
|
||||||
|
trailheads.push(tile);
|
||||||
|
}
|
||||||
|
//print!(
|
||||||
|
// "{}: {}, {} ",
|
||||||
|
// tile.height as char, tile.coords.0, tile.coords.1
|
||||||
|
//);
|
||||||
|
new_row.push(tile);
|
||||||
|
}
|
||||||
|
//println!();
|
||||||
|
updated_map.push(new_row);
|
||||||
|
}
|
||||||
|
let mut res = 0;
|
||||||
|
//println!("0 {trailheads:?}");
|
||||||
|
for trailhead in trailheads {
|
||||||
|
let mut neighbors = trailhead.get_neighbors(&updated_map);
|
||||||
|
//println!("1 {neighbors:?}");
|
||||||
|
for _idx in 2..=9 {
|
||||||
|
//println!("{idx}");
|
||||||
|
if neighbors.is_empty() {
|
||||||
|
//println!("empty");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
let inner_neighbors = neighbors.clone();
|
||||||
|
neighbors.clear();
|
||||||
|
for neighbor in inner_neighbors {
|
||||||
|
neighbors.extend_from_slice(&neighbor.get_neighbors(&updated_map));
|
||||||
|
}
|
||||||
|
//println!("{idx} {neighbors:?}");
|
||||||
|
}
|
||||||
|
res += neighbors.len();
|
||||||
|
}
|
||||||
|
res as i32
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
const INPUT_SMALL: &str = "0123
|
||||||
|
1234
|
||||||
|
8765
|
||||||
|
9876";
|
||||||
|
|
||||||
|
const INPUT_LARGE: &str = "89010123
|
||||||
|
78121874
|
||||||
|
87430965
|
||||||
|
96549874
|
||||||
|
45678903
|
||||||
|
32019012
|
||||||
|
01329801
|
||||||
|
10456732";
|
||||||
|
|
||||||
|
const INPUT_SIMPLIFIED_1: &str = "...0...
|
||||||
|
...1...
|
||||||
|
...2...
|
||||||
|
6543456
|
||||||
|
7.....7
|
||||||
|
8.....8
|
||||||
|
9.....9";
|
||||||
|
const INPUT_SIMPLIFIED_2: &str = "..90..9
|
||||||
|
...1.98
|
||||||
|
...2..7
|
||||||
|
6543456
|
||||||
|
765.987
|
||||||
|
876....
|
||||||
|
987....";
|
||||||
|
const INPUT_SIMPLIFIED_3: &str = "10..9..
|
||||||
|
2...8..
|
||||||
|
3...7..
|
||||||
|
4567654
|
||||||
|
...8..3
|
||||||
|
...9..2
|
||||||
|
.....01";
|
||||||
|
|
||||||
|
const INPUT_SIMPLIFIED_4: &str = ".....0.
|
||||||
|
..4321.
|
||||||
|
..5..2.
|
||||||
|
..6543.
|
||||||
|
..7..4.
|
||||||
|
..8765.
|
||||||
|
..9....";
|
||||||
|
|
||||||
|
const INPUT_SIMPLIFIED_5: &str = "012345
|
||||||
|
123456
|
||||||
|
234567
|
||||||
|
345678
|
||||||
|
4.6789
|
||||||
|
56789.";
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part1_small() {
|
||||||
|
let result = process_part1(INPUT_SMALL);
|
||||||
|
assert_eq!(result, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part1_large() {
|
||||||
|
let result = process_part1(INPUT_LARGE);
|
||||||
|
assert_eq!(result, 36);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part1_simplified_1() {
|
||||||
|
let result = process_part1(INPUT_SIMPLIFIED_1);
|
||||||
|
assert_eq!(result, 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part1_simplified_2() {
|
||||||
|
let result = process_part1(INPUT_SIMPLIFIED_2);
|
||||||
|
assert_eq!(result, 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part1_simplified_3() {
|
||||||
|
let result = process_part1(INPUT_SIMPLIFIED_3);
|
||||||
|
assert_eq!(result, 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part2_small() {
|
||||||
|
let result = process_part2(INPUT_SMALL);
|
||||||
|
assert_eq!(result, 16);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part2_large() {
|
||||||
|
let result = process_part2(INPUT_LARGE);
|
||||||
|
assert_eq!(result, 81);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part2_simplified_2() {
|
||||||
|
let result = process_part2(INPUT_SIMPLIFIED_2);
|
||||||
|
assert_eq!(result, 13);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part2_simplified_4() {
|
||||||
|
let result = process_part2(INPUT_SIMPLIFIED_4);
|
||||||
|
assert_eq!(result, 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part2_simplified_5() {
|
||||||
|
let result = process_part2(INPUT_SIMPLIFIED_5);
|
||||||
|
assert_eq!(result, 227);
|
||||||
|
}
|
||||||
|
}
|
98
y2024/src/days/d3.rs
Normal file
98
y2024/src/days/d3.rs
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
use regex::Regex;
|
||||||
|
|
||||||
|
pub fn process_part1(input: &str) -> i32 {
|
||||||
|
input
|
||||||
|
.lines()
|
||||||
|
.map(extract_mul_pairs)
|
||||||
|
.map(|pairs| pairs.iter().map(|(a, b)| a * b).sum::<i32>())
|
||||||
|
.sum()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Could use this regex but wouldn't know how to solve part 2
|
||||||
|
// /mul\([0-9]{1,3},[0-9]{1,3}\)/g
|
||||||
|
// /don't\(\).*do\(\)/g would select anything between first don't() and last do()
|
||||||
|
// not sure how to fix, invert and combine this
|
||||||
|
fn extract_mul_pairs(line: &str) -> Vec<(i32, i32)> {
|
||||||
|
let reg = Regex::new(r"mul\([0-9]{1,3},[0-9]{1,3}\)").unwrap();
|
||||||
|
reg.find_iter(line)
|
||||||
|
.map(|m| {
|
||||||
|
let match_str = m.as_str();
|
||||||
|
let (a, b) = match_str[4..match_str.len() - 1].split_once(",").unwrap();
|
||||||
|
let a = a.parse::<i32>().unwrap();
|
||||||
|
let b = b.parse::<i32>().unwrap();
|
||||||
|
(a, b)
|
||||||
|
})
|
||||||
|
.collect::<Vec<(i32, i32)>>()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn extract_mul_pairs_dont(line: &str) -> Vec<(i32, i32)> {
|
||||||
|
let reg = Regex::new(r"(mul\([0-9]{1,3},[0-9]{1,3}\))|(don't\(\)|do\(\))").unwrap();
|
||||||
|
let mut enabled = true;
|
||||||
|
reg.find_iter(line)
|
||||||
|
.map(|m| {
|
||||||
|
let match_str = m.as_str();
|
||||||
|
if match_str == "don't()" {
|
||||||
|
enabled = false;
|
||||||
|
} else if match_str == "do()" {
|
||||||
|
enabled = true;
|
||||||
|
}
|
||||||
|
if !["don't()", "do()"].contains(&match_str) && enabled {
|
||||||
|
let (a, b) = match_str[4..match_str.len() - 1].split_once(",").unwrap();
|
||||||
|
let a = a.parse::<i32>().unwrap();
|
||||||
|
let b = b.parse::<i32>().unwrap();
|
||||||
|
(a, b)
|
||||||
|
} else {
|
||||||
|
(0, 0)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.collect::<Vec<(i32, i32)>>()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn process_part2(input: &str) -> i32 {
|
||||||
|
let input = input.lines().collect::<Vec<&str>>().join("");
|
||||||
|
extract_mul_pairs_dont(&input)
|
||||||
|
.into_iter()
|
||||||
|
.map(|(a, b)| a * b)
|
||||||
|
.sum()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use std::fs;
|
||||||
|
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
const INPUT: &str =
|
||||||
|
"xmul(2,4)%&mul[3,7]!@^do_not_mul(5,5)+mul(32,64]then(mul(11,8)mul(8,5))mul( 1, 3)";
|
||||||
|
|
||||||
|
const INPUT_2: &str =
|
||||||
|
"xmul(2,4)&mul[3,7]!^don't()_mul(5,5)+mul(32,64](mul(11,8)undo()?mul(8,5))";
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part1() {
|
||||||
|
let result = process_part1(INPUT);
|
||||||
|
assert_eq!(result, 161);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn res1() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/3_input.txt")).unwrap();
|
||||||
|
let result = process_part1(&content);
|
||||||
|
assert_eq!(result, 183788984);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part2() {
|
||||||
|
let result = process_part2(INPUT_2);
|
||||||
|
assert_eq!(result, 48);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn res2() {
|
||||||
|
let root = env!("CARGO_MANIFEST_DIR");
|
||||||
|
let content = fs::read_to_string(format!("{root}/resources/3_input.txt")).unwrap();
|
||||||
|
let result = process_part2(&content);
|
||||||
|
assert_eq!(result, 62098619);
|
||||||
|
}
|
||||||
|
}
|
164
y2024/src/days/d4.rs
Normal file
164
y2024/src/days/d4.rs
Normal file
@ -0,0 +1,164 @@
|
|||||||
|
use std::cmp;
|
||||||
|
|
||||||
|
use utils::grid::Grid;
|
||||||
|
|
||||||
|
pub fn process_part1(input: &str) -> i32 {
|
||||||
|
let grid = input
|
||||||
|
.lines()
|
||||||
|
.map(|line| {
|
||||||
|
line.chars()
|
||||||
|
.map(|char| char.to_string())
|
||||||
|
.collect::<Vec<String>>()
|
||||||
|
})
|
||||||
|
.collect::<Vec<Vec<String>>>();
|
||||||
|
let mut grid = Grid::new(grid).unwrap();
|
||||||
|
let mut res = 0;
|
||||||
|
for row in &grid.rows {
|
||||||
|
let row = row.join("");
|
||||||
|
res += row.matches("XMAS").count();
|
||||||
|
res += row.matches("SAMX").count();
|
||||||
|
}
|
||||||
|
for diag_grave in grid.get_diagonals_grave() {
|
||||||
|
let diag_grave = diag_grave.join("");
|
||||||
|
res += diag_grave.matches("XMAS").count();
|
||||||
|
res += diag_grave.matches("SAMX").count();
|
||||||
|
}
|
||||||
|
for diag_aigu in grid.get_diagonals_aigu() {
|
||||||
|
let diag_aigu = diag_aigu.join("");
|
||||||
|
res += diag_aigu.matches("XMAS").count();
|
||||||
|
res += diag_aigu.matches("SAMX").count();
|
||||||
|
}
|
||||||
|
for col in grid.rotate_90().rows {
|
||||||
|
let col = col.join("");
|
||||||
|
res += col.matches("XMAS").count();
|
||||||
|
res += col.matches("SAMX").count();
|
||||||
|
}
|
||||||
|
res.try_into().unwrap()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn process_part2(input: &str) -> i32 {
|
||||||
|
let grid = input
|
||||||
|
.lines()
|
||||||
|
.map(|line| {
|
||||||
|
line.chars()
|
||||||
|
.map(|char| char.to_string())
|
||||||
|
.collect::<Vec<String>>()
|
||||||
|
})
|
||||||
|
.collect::<Vec<Vec<String>>>();
|
||||||
|
let grid = Grid::new(grid).unwrap();
|
||||||
|
let mut res = 0;
|
||||||
|
// Irrelevant as this finds + not x
|
||||||
|
// But actually helpful as I can just create diagonals, left and right pad to create a square
|
||||||
|
// grid and apply this
|
||||||
|
//for (row_idx, row) in grid.rows.iter().enumerate() {
|
||||||
|
// if row_idx == 0 || row_idx == grid.rows.len() - 1 {
|
||||||
|
// continue;
|
||||||
|
// }
|
||||||
|
// let row = row.join("");
|
||||||
|
// for (match_idx, _) in row.match_indices("MAS") {
|
||||||
|
// let above = grid.rows[row_idx - 1][match_idx + 1].clone();
|
||||||
|
// let below = grid.rows[row_idx + 1][match_idx + 1].clone();
|
||||||
|
// if (above == "M" && below == "S") || (above == "S" && below == "M") {
|
||||||
|
// res += 1;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// for (match_idx, _) in row.match_indices("SAM") {
|
||||||
|
// let above = grid.rows[row_idx - 1][match_idx + 1].clone();
|
||||||
|
// let below = grid.rows[row_idx + 1][match_idx + 1].clone();
|
||||||
|
// if (above == "M" && below == "S") || (above == "S" && below == "M") {
|
||||||
|
// res += 1;
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
let diagonals = grid.get_diagonals_grave();
|
||||||
|
// new width is as long as the longest diagonal
|
||||||
|
// the diagonal length goes from 1..min(grid width, grid height)
|
||||||
|
// then pad on each side by difference / 2
|
||||||
|
let new_width = cmp::min(grid.width as usize, grid.rows.len());
|
||||||
|
let mut even_grid = Vec::new();
|
||||||
|
let mut odd_grid = Vec::new();
|
||||||
|
for diagonal in diagonals {
|
||||||
|
let diagonal_length = diagonal.len();
|
||||||
|
let pad = (new_width - diagonal_length) / 2;
|
||||||
|
let new_row = [
|
||||||
|
vec!["#".to_string(); pad],
|
||||||
|
diagonal,
|
||||||
|
vec!["#".to_string(); pad],
|
||||||
|
]
|
||||||
|
.concat();
|
||||||
|
if diagonal_length % 2 == 0 {
|
||||||
|
even_grid.push(new_row);
|
||||||
|
} else {
|
||||||
|
odd_grid.push(new_row);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (row_idx, row) in even_grid.iter().enumerate() {
|
||||||
|
if row_idx == 0 || row_idx == even_grid.len() - 1 {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let row = row.join("");
|
||||||
|
for (match_idx, _) in row.match_indices("MAS") {
|
||||||
|
let above = even_grid[row_idx - 1][match_idx + 1].clone();
|
||||||
|
let below = even_grid[row_idx + 1][match_idx + 1].clone();
|
||||||
|
if (above == "M" && below == "S") || (above == "S" && below == "M") {
|
||||||
|
res += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (match_idx, _) in row.match_indices("SAM") {
|
||||||
|
let above = even_grid[row_idx - 1][match_idx + 1].clone();
|
||||||
|
let below = even_grid[row_idx + 1][match_idx + 1].clone();
|
||||||
|
if (above == "M" && below == "S") || (above == "S" && below == "M") {
|
||||||
|
res += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (row_idx, row) in odd_grid.iter().enumerate() {
|
||||||
|
if row_idx == 0 || row_idx == odd_grid.len() - 1 {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let row = row.join("");
|
||||||
|
for (match_idx, _) in row.match_indices("MAS") {
|
||||||
|
let above = odd_grid[row_idx - 1][match_idx + 1].clone();
|
||||||
|
let below = odd_grid[row_idx + 1][match_idx + 1].clone();
|
||||||
|
if (above == "M" && below == "S") || (above == "S" && below == "M") {
|
||||||
|
res += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (match_idx, _) in row.match_indices("SAM") {
|
||||||
|
let above = odd_grid[row_idx - 1][match_idx + 1].clone();
|
||||||
|
let below = odd_grid[row_idx + 1][match_idx + 1].clone();
|
||||||
|
if (above == "M" && below == "S") || (above == "S" && below == "M") {
|
||||||
|
res += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
res
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
const INPUT: &str = "MMMSXXMASM
|
||||||
|
MSAMXMSMSA
|
||||||
|
AMXSXMAAMM
|
||||||
|
MSAMASMSMX
|
||||||
|
XMASAMXAMM
|
||||||
|
XXAMMXXAMA
|
||||||
|
SMSMSASXSS
|
||||||
|
SAXAMASAAA
|
||||||
|
MAMMMXMMMM
|
||||||
|
MXMXAXMASX";
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part1() {
|
||||||
|
let result = process_part1(INPUT);
|
||||||
|
assert_eq!(result, 18);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part2() {
|
||||||
|
let result = process_part2(INPUT);
|
||||||
|
assert_eq!(result, 9);
|
||||||
|
}
|
||||||
|
}
|
181
y2024/src/days/d5.rs
Normal file
181
y2024/src/days/d5.rs
Normal file
@ -0,0 +1,181 @@
|
|||||||
|
#[derive(Clone, Debug)]
|
||||||
|
struct Page {
|
||||||
|
number: u32,
|
||||||
|
before: Vec<u32>,
|
||||||
|
after: Vec<u32>,
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_page(rules: &[Page], page_num: u32) -> Option<(Page, usize)> {
|
||||||
|
for (rule_idx, rule) in rules.iter().enumerate() {
|
||||||
|
if rule.number == page_num {
|
||||||
|
return Some((rule.clone(), rule_idx));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
None
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn process_part1(input: &str) -> u32 {
|
||||||
|
let mut rules = Vec::new();
|
||||||
|
let (rules_str, update) = input.split_once("\n\n").unwrap();
|
||||||
|
for rule in rules_str.lines() {
|
||||||
|
let (before, after) = rule.split_once("|").unwrap();
|
||||||
|
let before: u32 = before.parse().unwrap();
|
||||||
|
let after: u32 = after.parse().unwrap();
|
||||||
|
if let Some((mut page, page_idx)) = get_page(&rules, before) {
|
||||||
|
page.after.push(after);
|
||||||
|
rules[page_idx] = page;
|
||||||
|
} else {
|
||||||
|
rules.push(Page {
|
||||||
|
number: before,
|
||||||
|
before: Vec::new(),
|
||||||
|
after: vec![after],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if let Some((mut page, page_idx)) = get_page(&rules, after) {
|
||||||
|
page.before.push(before);
|
||||||
|
rules[page_idx] = page;
|
||||||
|
} else {
|
||||||
|
rules.push(Page {
|
||||||
|
number: after,
|
||||||
|
before: vec![before],
|
||||||
|
after: Vec::new(),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
update
|
||||||
|
.lines()
|
||||||
|
.map(|pages| {
|
||||||
|
let mut visited = Vec::new();
|
||||||
|
let pages = pages
|
||||||
|
.split(",")
|
||||||
|
.map(|page| page.parse::<u32>().unwrap())
|
||||||
|
.collect::<Vec<u32>>();
|
||||||
|
for &page_num in pages.iter() {
|
||||||
|
let (page_rules, _) = get_page(&rules, page_num).unwrap();
|
||||||
|
for after in page_rules.after {
|
||||||
|
if visited.contains(&after) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
visited.push(page_num);
|
||||||
|
}
|
||||||
|
pages[pages.len() / 2]
|
||||||
|
})
|
||||||
|
.sum()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn process_part2(input: &str) -> u32 {
|
||||||
|
let mut rules = Vec::new();
|
||||||
|
let (rules_str, update) = input.split_once("\n\n").unwrap();
|
||||||
|
for rule in rules_str.lines() {
|
||||||
|
let (before, after) = rule.split_once("|").unwrap();
|
||||||
|
let before: u32 = before.parse().unwrap();
|
||||||
|
let after: u32 = after.parse().unwrap();
|
||||||
|
if let Some((mut page, page_idx)) = get_page(&rules, before) {
|
||||||
|
page.after.push(after);
|
||||||
|
rules[page_idx] = page;
|
||||||
|
} else {
|
||||||
|
rules.push(Page {
|
||||||
|
number: before,
|
||||||
|
before: Vec::new(),
|
||||||
|
after: vec![after],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
if let Some((mut page, page_idx)) = get_page(&rules, after) {
|
||||||
|
page.before.push(before);
|
||||||
|
rules[page_idx] = page;
|
||||||
|
} else {
|
||||||
|
rules.push(Page {
|
||||||
|
number: after,
|
||||||
|
before: vec![before],
|
||||||
|
after: Vec::new(),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
update
|
||||||
|
.lines()
|
||||||
|
.map(|pages| {
|
||||||
|
let mut visited = Vec::new();
|
||||||
|
let mut is_ordered = true;
|
||||||
|
let pages = pages
|
||||||
|
.split(",")
|
||||||
|
.map(|page| page.parse::<u32>().unwrap())
|
||||||
|
.collect::<Vec<u32>>();
|
||||||
|
'outer: for &page_num in pages.iter() {
|
||||||
|
let (page_rules, _) = get_page(&rules, page_num).unwrap();
|
||||||
|
for after in page_rules.after {
|
||||||
|
if visited.contains(&after) {
|
||||||
|
is_ordered = false;
|
||||||
|
break 'outer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
visited.push(page_num);
|
||||||
|
}
|
||||||
|
if !is_ordered {
|
||||||
|
let mut ordered_pages = Vec::new();
|
||||||
|
for &page_num in pages.iter() {
|
||||||
|
let (page_rules, _) = get_page(&rules, page_num).unwrap();
|
||||||
|
let mut page_idx = ordered_pages.len();
|
||||||
|
for after in page_rules.after {
|
||||||
|
if let Some(after_idx) =
|
||||||
|
ordered_pages.iter().position(|&page| page == after)
|
||||||
|
{
|
||||||
|
if page_idx > after_idx {
|
||||||
|
page_idx = after_idx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ordered_pages.insert(page_idx, page_num);
|
||||||
|
}
|
||||||
|
return ordered_pages[ordered_pages.len() / 2];
|
||||||
|
}
|
||||||
|
0
|
||||||
|
})
|
||||||
|
.sum()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
const INPUT: &str = "47|53
|
||||||
|
97|13
|
||||||
|
97|61
|
||||||
|
97|47
|
||||||
|
75|29
|
||||||
|
61|13
|
||||||
|
75|53
|
||||||
|
29|13
|
||||||
|
97|29
|
||||||
|
53|29
|
||||||
|
61|53
|
||||||
|
97|53
|
||||||
|
61|29
|
||||||
|
47|13
|
||||||
|
75|47
|
||||||
|
97|75
|
||||||
|
47|61
|
||||||
|
75|61
|
||||||
|
47|29
|
||||||
|
75|13
|
||||||
|
53|13
|
||||||
|
|
||||||
|
75,47,61,53,29
|
||||||
|
97,61,53,29,13
|
||||||
|
75,29,13
|
||||||
|
75,97,47,61,53
|
||||||
|
61,13,29
|
||||||
|
97,13,75,29,47";
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part1() {
|
||||||
|
let result = process_part1(INPUT);
|
||||||
|
assert_eq!(result, 143);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part2() {
|
||||||
|
let result = process_part2(INPUT);
|
||||||
|
assert_eq!(result, 123);
|
||||||
|
}
|
||||||
|
}
|
331
y2024/src/days/d6.rs
Normal file
331
y2024/src/days/d6.rs
Normal file
@ -0,0 +1,331 @@
|
|||||||
|
use std::{collections::HashSet, error::Error, fmt::Display};
|
||||||
|
|
||||||
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||||
|
enum GuardDirection {
|
||||||
|
Up,
|
||||||
|
Down,
|
||||||
|
Left,
|
||||||
|
Right,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl GuardDirection {
|
||||||
|
fn turn_right(&mut self) {
|
||||||
|
*self = match self {
|
||||||
|
GuardDirection::Up => GuardDirection::Right,
|
||||||
|
GuardDirection::Down => GuardDirection::Left,
|
||||||
|
GuardDirection::Left => GuardDirection::Up,
|
||||||
|
GuardDirection::Right => GuardDirection::Down,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<GuardDirection> for char {
|
||||||
|
fn from(value: GuardDirection) -> Self {
|
||||||
|
match value {
|
||||||
|
GuardDirection::Up => '^',
|
||||||
|
GuardDirection::Down => 'v',
|
||||||
|
GuardDirection::Left => '<',
|
||||||
|
GuardDirection::Right => '>',
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl TryFrom<char> for GuardDirection {
|
||||||
|
type Error = Box<dyn Error>;
|
||||||
|
|
||||||
|
fn try_from(value: char) -> std::result::Result<GuardDirection, Box<dyn Error>> {
|
||||||
|
match value {
|
||||||
|
'^' => Ok(Self::Up),
|
||||||
|
'v' => Ok(Self::Down),
|
||||||
|
'<' => Ok(Self::Left),
|
||||||
|
'>' => Ok(Self::Right),
|
||||||
|
_ => Err(Box::from(format!("{value} is not a valid direction"))),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Display for GuardDirection {
|
||||||
|
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||||
|
match self {
|
||||||
|
GuardDirection::Up => write!(f, "^"),
|
||||||
|
GuardDirection::Down => write!(f, "v"),
|
||||||
|
GuardDirection::Left => write!(f, "<"),
|
||||||
|
GuardDirection::Right => write!(f, ">"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn process_part1(input: &str) -> i32 {
|
||||||
|
let grid = input
|
||||||
|
.lines()
|
||||||
|
.map(|line| line.chars().collect::<Vec<char>>())
|
||||||
|
.collect::<Vec<Vec<char>>>();
|
||||||
|
get_visited_positions(grid, true).len() as i32
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_visited_positions(grid: Vec<Vec<char>>, initial: bool) -> HashSet<(i32, i32)> {
|
||||||
|
let width = grid[1].len() as i32;
|
||||||
|
let height = grid.len() as i32;
|
||||||
|
let mut crates: Vec<(i32, i32)> = Vec::new();
|
||||||
|
let mut guard_position = (0, 0);
|
||||||
|
let mut guard_direction = GuardDirection::Up;
|
||||||
|
for (row, line) in grid.into_iter().enumerate() {
|
||||||
|
for (col, chara) in line.into_iter().enumerate() {
|
||||||
|
if chara == '#' {
|
||||||
|
crates.push((col as i32, row as i32));
|
||||||
|
}
|
||||||
|
if chara == '.' {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if GuardDirection::try_from(chara).is_ok() {
|
||||||
|
guard_position = (col as i32, row as i32);
|
||||||
|
guard_direction = GuardDirection::try_from(chara).unwrap();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let mut visited_positions = HashSet::new();
|
||||||
|
if initial {
|
||||||
|
visited_positions.insert(guard_position);
|
||||||
|
}
|
||||||
|
loop {
|
||||||
|
match guard_direction {
|
||||||
|
GuardDirection::Up => {
|
||||||
|
let mut closest = (guard_position.0, -1);
|
||||||
|
crates.iter().for_each(|&crate_pos| {
|
||||||
|
if guard_position.0 == crate_pos.0
|
||||||
|
&& guard_position.1 > crate_pos.1
|
||||||
|
&& guard_position.1 - crate_pos.1 < guard_position.1 - closest.1
|
||||||
|
{
|
||||||
|
closest = crate_pos;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
for idx in ((closest.1 + 1)..guard_position.1).rev() {
|
||||||
|
visited_positions.insert((guard_position.0, idx));
|
||||||
|
if idx == 0 {
|
||||||
|
return visited_positions;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
guard_position.1 = closest.1 + 1;
|
||||||
|
guard_direction.turn_right();
|
||||||
|
}
|
||||||
|
GuardDirection::Down => {
|
||||||
|
let mut closest = (guard_position.0, height);
|
||||||
|
crates.iter().for_each(|&crate_pos| {
|
||||||
|
if guard_position.0 == crate_pos.0
|
||||||
|
&& guard_position.1 < crate_pos.1
|
||||||
|
&& crate_pos.1 - guard_position.1 < closest.1 - guard_position.1
|
||||||
|
{
|
||||||
|
closest = crate_pos;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
for idx in (guard_position.1 + 1)..closest.1 {
|
||||||
|
visited_positions.insert((guard_position.0, idx));
|
||||||
|
if idx == height - 1 {
|
||||||
|
return visited_positions;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
guard_position.1 = closest.1 - 1;
|
||||||
|
guard_direction.turn_right();
|
||||||
|
}
|
||||||
|
GuardDirection::Left => {
|
||||||
|
let mut closest = (-1, guard_position.1);
|
||||||
|
crates.iter().for_each(|&crate_pos| {
|
||||||
|
if guard_position.1 == crate_pos.1
|
||||||
|
&& guard_position.0 > crate_pos.0
|
||||||
|
&& guard_position.0 - crate_pos.0 < guard_position.0 - closest.0
|
||||||
|
{
|
||||||
|
closest = crate_pos;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
for idx in ((closest.0 + 1)..guard_position.0).rev() {
|
||||||
|
visited_positions.insert((idx, guard_position.1));
|
||||||
|
if idx == 0 {
|
||||||
|
return visited_positions;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
guard_position.0 = closest.0 + 1;
|
||||||
|
guard_direction.turn_right();
|
||||||
|
}
|
||||||
|
GuardDirection::Right => {
|
||||||
|
let mut closest = (width, guard_position.1);
|
||||||
|
crates.iter().for_each(|&crate_pos| {
|
||||||
|
if guard_position.1 == crate_pos.1
|
||||||
|
&& guard_position.0 < crate_pos.0
|
||||||
|
&& crate_pos.0 - guard_position.0 < closest.0 - guard_position.0
|
||||||
|
{
|
||||||
|
closest = crate_pos;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
for idx in (guard_position.0 + 1)..closest.0 {
|
||||||
|
visited_positions.insert((idx, guard_position.1));
|
||||||
|
if idx == width - 1 {
|
||||||
|
return visited_positions;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
guard_position.0 = closest.0 - 1;
|
||||||
|
guard_direction.turn_right();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 1424
|
||||||
|
pub fn process_part2(input: &str) -> i32 {
|
||||||
|
let grid = input
|
||||||
|
.lines()
|
||||||
|
.map(|line| line.chars().collect::<Vec<char>>())
|
||||||
|
.collect::<Vec<Vec<char>>>();
|
||||||
|
let width = grid[1].len() as i32;
|
||||||
|
let height = grid.len() as i32;
|
||||||
|
let mut crates: Vec<(i32, i32)> = Vec::new();
|
||||||
|
let possible_obstacles: Vec<(i32, i32)> = Vec::from_iter(get_visited_positions(grid, false));
|
||||||
|
let mut initial_guard_position = (0, 0);
|
||||||
|
let mut initial_guard_direction = GuardDirection::Up;
|
||||||
|
for (row, line) in input.lines().enumerate() {
|
||||||
|
for (col, chara) in line.chars().enumerate() {
|
||||||
|
if chara == '#' {
|
||||||
|
crates.push((col as i32, row as i32));
|
||||||
|
}
|
||||||
|
if chara == '.' {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if GuardDirection::try_from(chara).is_ok() {
|
||||||
|
initial_guard_position = (col as i32, row as i32);
|
||||||
|
initial_guard_direction = GuardDirection::try_from(chara).unwrap();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let mut loops = 0;
|
||||||
|
for possible_obstacle in possible_obstacles {
|
||||||
|
let mut visited_obstacles = HashSet::new();
|
||||||
|
crates.push(possible_obstacle);
|
||||||
|
let mut guard_position = initial_guard_position;
|
||||||
|
let mut guard_direction = initial_guard_direction;
|
||||||
|
'loop_finder: loop {
|
||||||
|
match guard_direction {
|
||||||
|
GuardDirection::Up => {
|
||||||
|
let mut closest = (guard_position.0, -1);
|
||||||
|
crates.iter().for_each(|&crate_pos| {
|
||||||
|
if guard_position.0 == crate_pos.0
|
||||||
|
&& guard_position.1 > crate_pos.1
|
||||||
|
&& guard_position.1 - crate_pos.1 < guard_position.1 - closest.1
|
||||||
|
{
|
||||||
|
closest = crate_pos;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
guard_position.1 = closest.1 + 1;
|
||||||
|
if closest.1 == -1 {
|
||||||
|
break 'loop_finder;
|
||||||
|
}
|
||||||
|
if visited_obstacles
|
||||||
|
.contains(&((guard_position.0, closest.1 + 1), guard_direction))
|
||||||
|
{
|
||||||
|
loops += 1;
|
||||||
|
break 'loop_finder;
|
||||||
|
}
|
||||||
|
visited_obstacles.insert(((guard_position.0, closest.1 + 1), guard_direction));
|
||||||
|
guard_direction.turn_right();
|
||||||
|
}
|
||||||
|
GuardDirection::Down => {
|
||||||
|
let mut closest = (guard_position.0, height);
|
||||||
|
crates.iter().for_each(|&crate_pos| {
|
||||||
|
if guard_position.0 == crate_pos.0
|
||||||
|
&& guard_position.1 < crate_pos.1
|
||||||
|
&& crate_pos.1 - guard_position.1 < closest.1 - guard_position.1
|
||||||
|
{
|
||||||
|
closest = crate_pos;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
guard_position.1 = closest.1 - 1;
|
||||||
|
if closest.1 == height {
|
||||||
|
break 'loop_finder;
|
||||||
|
}
|
||||||
|
if visited_obstacles
|
||||||
|
.contains(&((guard_position.0, closest.1 - 1), guard_direction))
|
||||||
|
{
|
||||||
|
loops += 1;
|
||||||
|
break 'loop_finder;
|
||||||
|
}
|
||||||
|
visited_obstacles.insert(((guard_position.0, closest.1 - 1), guard_direction));
|
||||||
|
guard_direction.turn_right();
|
||||||
|
}
|
||||||
|
GuardDirection::Left => {
|
||||||
|
let mut closest = (-1, guard_position.1);
|
||||||
|
crates.iter().for_each(|&crate_pos| {
|
||||||
|
if guard_position.1 == crate_pos.1
|
||||||
|
&& guard_position.0 > crate_pos.0
|
||||||
|
&& guard_position.0 - crate_pos.0 < guard_position.0 - closest.0
|
||||||
|
{
|
||||||
|
closest = crate_pos;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
guard_position.0 = closest.0 + 1;
|
||||||
|
if closest.0 == -1 {
|
||||||
|
break 'loop_finder;
|
||||||
|
}
|
||||||
|
if visited_obstacles
|
||||||
|
.contains(&((closest.0 + 1, guard_position.1), guard_direction))
|
||||||
|
{
|
||||||
|
loops += 1;
|
||||||
|
break 'loop_finder;
|
||||||
|
}
|
||||||
|
visited_obstacles.insert(((closest.0 + 1, guard_position.1), guard_direction));
|
||||||
|
guard_direction.turn_right();
|
||||||
|
}
|
||||||
|
GuardDirection::Right => {
|
||||||
|
let mut closest = (width, guard_position.1);
|
||||||
|
crates.iter().for_each(|&crate_pos| {
|
||||||
|
if guard_position.1 == crate_pos.1
|
||||||
|
&& guard_position.0 < crate_pos.0
|
||||||
|
&& crate_pos.0 - guard_position.0 < closest.0 - guard_position.0
|
||||||
|
{
|
||||||
|
closest = crate_pos;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
guard_position.0 = closest.0 - 1;
|
||||||
|
if closest.0 == width {
|
||||||
|
break 'loop_finder;
|
||||||
|
}
|
||||||
|
if visited_obstacles
|
||||||
|
.contains(&((closest.0 - 1, guard_position.1), guard_direction))
|
||||||
|
{
|
||||||
|
loops += 1;
|
||||||
|
break 'loop_finder;
|
||||||
|
}
|
||||||
|
visited_obstacles.insert(((closest.0 - 1, guard_position.1), guard_direction));
|
||||||
|
guard_direction.turn_right();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
crates.pop();
|
||||||
|
}
|
||||||
|
loops
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
const INPUT: &str = "....#.....
|
||||||
|
.........#
|
||||||
|
..........
|
||||||
|
..#.......
|
||||||
|
.......#..
|
||||||
|
..........
|
||||||
|
.#..^.....
|
||||||
|
........#.
|
||||||
|
#.........
|
||||||
|
......#...";
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part1() {
|
||||||
|
let result = process_part1(INPUT);
|
||||||
|
assert_eq!(result, 41);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part2() {
|
||||||
|
let result = process_part2(INPUT);
|
||||||
|
assert_eq!(result, 6);
|
||||||
|
}
|
||||||
|
}
|
124
y2024/src/days/d7.rs
Normal file
124
y2024/src/days/d7.rs
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
use std::iter::zip;
|
||||||
|
|
||||||
|
pub fn process_part1(input: &str) -> i64 {
|
||||||
|
input
|
||||||
|
.lines()
|
||||||
|
.map(|line| {
|
||||||
|
let (eq_result, equation) = line.split_once(": ").unwrap();
|
||||||
|
let eq_result = eq_result.parse::<i64>().unwrap();
|
||||||
|
let numbers = equation
|
||||||
|
.split(" ")
|
||||||
|
.map(|num| num.parse::<i64>().unwrap())
|
||||||
|
.collect::<Vec<i64>>();
|
||||||
|
let mut operators = vec!["+"; numbers.len() - 1];
|
||||||
|
let num_combinations = 2_u32.pow(operators.len() as u32);
|
||||||
|
for _ in 0..num_combinations {
|
||||||
|
let mut res = numbers[0];
|
||||||
|
for (num, op) in zip(numbers[1..].iter(), operators.iter()) {
|
||||||
|
if op == &"+" {
|
||||||
|
res += num;
|
||||||
|
}
|
||||||
|
if op == &"*" {
|
||||||
|
res *= num;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if res == eq_result {
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
operators = binary_add_operators(operators);
|
||||||
|
}
|
||||||
|
0
|
||||||
|
})
|
||||||
|
.sum()
|
||||||
|
}
|
||||||
|
|
||||||
|
// permutating all combinations of + and * is like counting in binary
|
||||||
|
fn binary_add_operators(operators: Vec<&str>) -> Vec<&str> {
|
||||||
|
let mut new_operators = operators.clone();
|
||||||
|
for (idx, operator) in operators.into_iter().enumerate() {
|
||||||
|
if operator == "+" {
|
||||||
|
new_operators[idx] = "*";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
new_operators[idx] = "+";
|
||||||
|
}
|
||||||
|
new_operators
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn process_part2(input: &str) -> i64 {
|
||||||
|
input
|
||||||
|
.lines()
|
||||||
|
.map(|line| {
|
||||||
|
let (eq_result, equation) = line.split_once(": ").unwrap();
|
||||||
|
let eq_result = eq_result.parse::<i64>().unwrap();
|
||||||
|
let numbers = equation
|
||||||
|
.split(" ")
|
||||||
|
.map(|num| num.parse::<i64>().unwrap())
|
||||||
|
.collect::<Vec<i64>>();
|
||||||
|
let mut operators = vec!["+"; numbers.len() - 1];
|
||||||
|
let num_combinations = 3_u32.pow(operators.len() as u32);
|
||||||
|
for _ in 0..num_combinations {
|
||||||
|
let mut res = numbers[0];
|
||||||
|
for (num, op) in zip(numbers[1..].iter(), operators.iter()) {
|
||||||
|
if op == &"+" {
|
||||||
|
res += num;
|
||||||
|
}
|
||||||
|
if op == &"*" {
|
||||||
|
res *= num;
|
||||||
|
}
|
||||||
|
if op == &"||" {
|
||||||
|
res = format!("{res}{num}").parse().unwrap();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if res == eq_result {
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
operators = ternary_add_operators(operators);
|
||||||
|
}
|
||||||
|
0
|
||||||
|
})
|
||||||
|
.sum()
|
||||||
|
}
|
||||||
|
|
||||||
|
// permutating all combinations of + and * is like counting in ternary
|
||||||
|
fn ternary_add_operators(operators: Vec<&str>) -> Vec<&str> {
|
||||||
|
let mut new_operators = operators.clone();
|
||||||
|
for (idx, operator) in operators.into_iter().enumerate() {
|
||||||
|
if operator == "+" {
|
||||||
|
new_operators[idx] = "*";
|
||||||
|
break;
|
||||||
|
} else if operator == "*" {
|
||||||
|
new_operators[idx] = "||";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
new_operators[idx] = "+";
|
||||||
|
}
|
||||||
|
new_operators
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
const INPUT: &str = "190: 10 19
|
||||||
|
3267: 81 40 27
|
||||||
|
83: 17 5
|
||||||
|
156: 15 6
|
||||||
|
7290: 6 8 6 15
|
||||||
|
161011: 16 10 13
|
||||||
|
192: 17 8 14
|
||||||
|
21037: 9 7 18 13
|
||||||
|
292: 11 6 16 20";
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part1() {
|
||||||
|
let result = process_part1(INPUT);
|
||||||
|
assert_eq!(result, 3749);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part2() {
|
||||||
|
let result = process_part2(INPUT);
|
||||||
|
assert_eq!(result, 11387);
|
||||||
|
}
|
||||||
|
}
|
227
y2024/src/days/d8.rs
Normal file
227
y2024/src/days/d8.rs
Normal file
@ -0,0 +1,227 @@
|
|||||||
|
use itertools::Itertools;
|
||||||
|
use std::collections::{HashMap, HashSet};
|
||||||
|
|
||||||
|
pub fn process_part1(input: &str) -> usize {
|
||||||
|
let mut antennas_freq_pos = HashMap::new();
|
||||||
|
// group all antenna positions by frequency
|
||||||
|
let grid = input
|
||||||
|
.lines()
|
||||||
|
.map(|line| line.chars().collect_vec())
|
||||||
|
.collect_vec();
|
||||||
|
let width = grid[0].len();
|
||||||
|
let height = grid.len();
|
||||||
|
for (y, line) in input.lines().enumerate() {
|
||||||
|
for (x, chara) in line.chars().enumerate() {
|
||||||
|
if chara == '.' {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
antennas_freq_pos
|
||||||
|
.entry(chara)
|
||||||
|
.and_modify(|positions: &mut Vec<(isize, isize)>| {
|
||||||
|
positions.push((x as isize, y as isize))
|
||||||
|
})
|
||||||
|
.or_insert(vec![(x as isize, y as isize)]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// get all combinations of 2 antennas by their frequency
|
||||||
|
// and get_antinodes
|
||||||
|
let mut antinodes = HashSet::new();
|
||||||
|
for (_freq, positions) in antennas_freq_pos {
|
||||||
|
let pairs = positions.into_iter().combinations(2);
|
||||||
|
for pair in pairs {
|
||||||
|
let (antinode_a, antinode_b) = get_antinodes(pair[0], pair[1]);
|
||||||
|
if antinode_a.0 >= 0
|
||||||
|
&& antinode_a.0 < width as isize
|
||||||
|
&& antinode_a.1 >= 0
|
||||||
|
&& antinode_a.1 < height as isize
|
||||||
|
{
|
||||||
|
antinodes.insert(antinode_a);
|
||||||
|
}
|
||||||
|
if antinode_b.0 >= 0
|
||||||
|
&& antinode_b.0 < width as isize
|
||||||
|
&& antinode_b.1 >= 0
|
||||||
|
&& antinode_b.1 < height as isize
|
||||||
|
{
|
||||||
|
antinodes.insert(antinode_b);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let mut antinodes = antinodes.iter().collect_vec();
|
||||||
|
antinodes.sort();
|
||||||
|
antinodes.len()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_antinodes(
|
||||||
|
antenna_a: (isize, isize),
|
||||||
|
antenna_b: (isize, isize),
|
||||||
|
) -> ((isize, isize), (isize, isize)) {
|
||||||
|
let vec2 = ((antenna_a.0 - antenna_b.0), (antenna_a.1 - antenna_b.1));
|
||||||
|
let antinode_a = {
|
||||||
|
let antinode_a = ((antenna_a.0 + vec2.0), (antenna_a.1 + vec2.1));
|
||||||
|
if antinode_a == antenna_b {
|
||||||
|
((antenna_a.0 - vec2.0), (antenna_a.1 - vec2.1))
|
||||||
|
} else {
|
||||||
|
antinode_a
|
||||||
|
}
|
||||||
|
};
|
||||||
|
let antinode_b = {
|
||||||
|
let antinode_b = ((antenna_b.0 + vec2.0), (antenna_b.1 + vec2.1));
|
||||||
|
if antinode_b == antenna_a {
|
||||||
|
((antenna_b.0 - vec2.0), (antenna_b.1 - vec2.1))
|
||||||
|
} else {
|
||||||
|
antinode_b
|
||||||
|
}
|
||||||
|
};
|
||||||
|
(antinode_a, antinode_b)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_reasonant_antinodes(
|
||||||
|
antenna_a: (isize, isize),
|
||||||
|
antenna_b: (isize, isize),
|
||||||
|
width: isize,
|
||||||
|
height: isize,
|
||||||
|
) -> Vec<(isize, isize)> {
|
||||||
|
let mut antinodes = HashSet::new();
|
||||||
|
antinodes.insert(antenna_a);
|
||||||
|
antinodes.insert(antenna_b);
|
||||||
|
let vec2 = ((antenna_a.0 - antenna_b.0), (antenna_a.1 - antenna_b.1));
|
||||||
|
let (mut a, mut b) = (antenna_a, antenna_b);
|
||||||
|
loop {
|
||||||
|
let antinode_a = {
|
||||||
|
let antinode_a = ((a.0 + vec2.0), (a.1 + vec2.1));
|
||||||
|
if antinode_a == b {
|
||||||
|
((a.0 - vec2.0), (a.1 - vec2.1))
|
||||||
|
} else {
|
||||||
|
antinode_a
|
||||||
|
}
|
||||||
|
};
|
||||||
|
if antinode_a.0 >= 0 && antinode_a.0 < width && antinode_a.1 >= 0 && antinode_a.1 < height {
|
||||||
|
antinodes.insert(antinode_a);
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
b = a;
|
||||||
|
a = antinode_a;
|
||||||
|
}
|
||||||
|
let (mut a, mut b) = (antenna_a, antenna_b);
|
||||||
|
loop {
|
||||||
|
let antinode_b = {
|
||||||
|
let antinode_b = ((b.0 + vec2.0), (b.1 + vec2.1));
|
||||||
|
if antinode_b == a {
|
||||||
|
((b.0 - vec2.0), (b.1 - vec2.1))
|
||||||
|
} else {
|
||||||
|
antinode_b
|
||||||
|
}
|
||||||
|
};
|
||||||
|
if antinode_b.0 >= 0 && antinode_b.0 < width && antinode_b.1 >= 0 && antinode_b.1 < height {
|
||||||
|
antinodes.insert(antinode_b);
|
||||||
|
} else {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
a = b;
|
||||||
|
b = antinode_b;
|
||||||
|
}
|
||||||
|
antinodes.into_iter().collect_vec()
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn process_part2(input: &str) -> usize {
|
||||||
|
let mut antennas_freq_pos = HashMap::new();
|
||||||
|
// group all antenna positions by frequency
|
||||||
|
let grid = input
|
||||||
|
.lines()
|
||||||
|
.map(|line| line.chars().collect_vec())
|
||||||
|
.collect_vec();
|
||||||
|
let width = grid[0].len();
|
||||||
|
let height = grid.len();
|
||||||
|
for (y, line) in input.lines().enumerate() {
|
||||||
|
for (x, chara) in line.chars().enumerate() {
|
||||||
|
if chara == '.' {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
antennas_freq_pos
|
||||||
|
.entry(chara)
|
||||||
|
.and_modify(|positions: &mut Vec<(isize, isize)>| {
|
||||||
|
positions.push((x as isize, y as isize))
|
||||||
|
})
|
||||||
|
.or_insert(vec![(x as isize, y as isize)]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// get all combinations of 2 antennas by their frequency
|
||||||
|
// and get_antinodes
|
||||||
|
let mut all_antinodes: HashSet<(isize, isize)> = HashSet::new();
|
||||||
|
for (_freq, positions) in antennas_freq_pos {
|
||||||
|
let pairs = positions.into_iter().combinations(2);
|
||||||
|
for pair in pairs {
|
||||||
|
let (a, b) = (pair[0], pair[1]);
|
||||||
|
let antinodes = get_reasonant_antinodes(a, b, width as isize, height as isize);
|
||||||
|
all_antinodes.extend(antinodes.iter());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let mut antinodes = all_antinodes.iter().collect_vec();
|
||||||
|
antinodes.sort();
|
||||||
|
antinodes.len()
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
const INPUT: &str = "............
|
||||||
|
........0...
|
||||||
|
.....0......
|
||||||
|
.......0....
|
||||||
|
....0.......
|
||||||
|
......A.....
|
||||||
|
............
|
||||||
|
............
|
||||||
|
........A...
|
||||||
|
.........A..
|
||||||
|
............
|
||||||
|
............";
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part1() {
|
||||||
|
let result = process_part1(INPUT);
|
||||||
|
assert_eq!(result, 14);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_get_antinodes_1() {
|
||||||
|
let antenna_a = (5, 2);
|
||||||
|
let antenna_b = (7, 3);
|
||||||
|
let (antinode_a, antinode_b) = get_antinodes(antenna_a, antenna_b);
|
||||||
|
assert_eq!(antinode_a, (3, 1));
|
||||||
|
assert_eq!(antinode_b, (9, 4));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_get_antinodes_2() {
|
||||||
|
let antenna_a = (5, 2);
|
||||||
|
let antenna_b = (8, 1);
|
||||||
|
let (antinode_a, antinode_b) = get_antinodes(antenna_a, antenna_b);
|
||||||
|
assert_eq!(antinode_a, (2, 3));
|
||||||
|
assert_eq!(antinode_b, (11, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part2() {
|
||||||
|
let result = process_part2(INPUT);
|
||||||
|
assert_eq!(result, 34);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part2_simple() {
|
||||||
|
let input = "T.........
|
||||||
|
...T......
|
||||||
|
.T........
|
||||||
|
..........
|
||||||
|
..........
|
||||||
|
..........
|
||||||
|
..........
|
||||||
|
..........
|
||||||
|
..........
|
||||||
|
..........";
|
||||||
|
let result = process_part2(input);
|
||||||
|
assert_eq!(result, 9);
|
||||||
|
}
|
||||||
|
}
|
129
y2024/src/days/d9.rs
Normal file
129
y2024/src/days/d9.rs
Normal file
@ -0,0 +1,129 @@
|
|||||||
|
pub fn process_part1(input: &str) -> u64 {
|
||||||
|
let mut ids = Vec::new();
|
||||||
|
for (file_id, chunk) in input.trim_end().as_bytes().chunks(2).enumerate() {
|
||||||
|
let byte = chunk[0];
|
||||||
|
for _ in 0..(byte - 48) {
|
||||||
|
ids.push(file_id.to_string());
|
||||||
|
}
|
||||||
|
if let Some(&byte) = chunk.get(1) {
|
||||||
|
for _ in 0..(byte - 48) {
|
||||||
|
ids.push(".".into());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let mut ordered = Vec::new();
|
||||||
|
while !ids.is_empty() {
|
||||||
|
let id = ids.remove(0);
|
||||||
|
if id == "." {
|
||||||
|
while let Some(id) = ids.pop() {
|
||||||
|
if id != "." {
|
||||||
|
ordered.push(id);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
ordered.push(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let mut res = 0;
|
||||||
|
for (multiplier, id) in ordered.iter().enumerate() {
|
||||||
|
res += multiplier * id.parse::<usize>().unwrap();
|
||||||
|
}
|
||||||
|
res as u64
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn process_part2(input: &str) -> u64 {
|
||||||
|
let mut ids = Vec::new();
|
||||||
|
for (file_id, chunk) in input.trim_end().as_bytes().chunks(2).enumerate() {
|
||||||
|
let byte = chunk[0];
|
||||||
|
ids.push((file_id.to_string(), byte - 48));
|
||||||
|
if let Some(&byte) = chunk.get(1) {
|
||||||
|
ids.push((".".into(), byte - 48));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let mut from_idx = ids.len() - 1;
|
||||||
|
loop {
|
||||||
|
if from_idx == 0 {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
let (id, size) = ids[from_idx].clone();
|
||||||
|
if id == *"." {
|
||||||
|
from_idx -= 1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let to_idx = if let Some(idx) = ids.iter().position(|id| id.1 >= size && id.0 == ".") {
|
||||||
|
idx
|
||||||
|
} else {
|
||||||
|
from_idx -= 1;
|
||||||
|
continue;
|
||||||
|
};
|
||||||
|
if from_idx < to_idx {
|
||||||
|
from_idx -= 1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
let free_space = ids[to_idx].1;
|
||||||
|
match size.cmp(&free_space) {
|
||||||
|
std::cmp::Ordering::Less => {
|
||||||
|
let remaining_free_space = free_space - size;
|
||||||
|
ids[to_idx].1 = remaining_free_space;
|
||||||
|
ids[from_idx] = (".".to_string(), size);
|
||||||
|
ids.insert(to_idx, (id.clone(), size));
|
||||||
|
from_idx -= 1;
|
||||||
|
}
|
||||||
|
std::cmp::Ordering::Equal => {
|
||||||
|
ids[to_idx] = (id.clone(), size);
|
||||||
|
ids[from_idx] = (".".to_string(), size);
|
||||||
|
from_idx -= 1;
|
||||||
|
}
|
||||||
|
std::cmp::Ordering::Greater => {
|
||||||
|
from_idx -= 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let mut res = 0;
|
||||||
|
let mut multiplier = 0;
|
||||||
|
for (id, size) in ids.into_iter() {
|
||||||
|
if id == *"." {
|
||||||
|
multiplier += size as usize;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
for _idx in 0..size as usize {
|
||||||
|
res += multiplier * id.parse::<usize>().unwrap();
|
||||||
|
multiplier += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
res as u64
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
const INPUT_1: &str = "12345";
|
||||||
|
const INPUT_2: &str = "2333133121414131402";
|
||||||
|
const INPUT_3: &str = "23331331214141314020202";
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part1_simple() {
|
||||||
|
let result = process_part1(INPUT_1);
|
||||||
|
assert_eq!(result, 60);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part1_complex_1() {
|
||||||
|
let result = process_part1(INPUT_2);
|
||||||
|
assert_eq!(result, 1928);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part1_complex_2() {
|
||||||
|
let result = process_part1(INPUT_3);
|
||||||
|
assert_eq!(result, 2842);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn part2() {
|
||||||
|
let result = process_part2(INPUT_2);
|
||||||
|
assert_eq!(result, 2858)
|
||||||
|
}
|
||||||
|
}
|
@ -1,3 +1,11 @@
|
|||||||
pub mod d1;
|
pub mod d1;
|
||||||
|
|
||||||
pub mod d2;
|
pub mod d2;
|
||||||
|
pub mod d3;
|
||||||
|
pub mod d4;
|
||||||
|
pub mod d5;
|
||||||
|
pub mod d6;
|
||||||
|
pub mod d7;
|
||||||
|
pub mod d8;
|
||||||
|
pub mod d9;
|
||||||
|
|
||||||
|
pub mod d10;
|
||||||
|
Loading…
Reference in New Issue
Block a user