Compare commits

..

22 Commits

Author SHA1 Message Date
Lol3rrr
9f43000c94 Implement 2025 - Day 11 - Part 1 2026-01-14 20:52:19 +01:00
Lol3rrr
f9729624f5 Implement 2025 - Day 10 - Part 1 2026-01-13 22:59:58 +01:00
Lol3rrr
c2df9b06ca Start adapting 2025 - Day 9 for part 2 TODO 2026-01-10 00:44:45 +01:00
Lol3rrr
f2d621dcb4 Implement 2025 - Day 9 - Part 1 2026-01-09 22:33:55 +01:00
Lol3rrr
1630b3c627 Implement 2025 - Day 8 - Part 2 2026-01-09 21:20:53 +01:00
Lol3rrr
8d86e18199 Implement 2025 - Day 8 - Part 1 2026-01-09 21:14:53 +01:00
Lol3rrr
263f80e6a3 Implement 2025 - Day 7 - Part 2 2026-01-09 19:49:23 +01:00
Lol3rrr
947b9cafca Implement 2025 - Day 7 - Part 1 2026-01-09 17:56:31 +01:00
Lol3rrr
5f792c2ffa Update README 2026-01-09 17:08:33 +01:00
Lol3rrr
03c7e5f5f1 Implement 2025 - Day 6 - Part 2 2026-01-09 17:08:16 +01:00
Lol3rrr
56bf4644ab Implement 2025 - Day 6 - Part 1 2026-01-09 12:02:09 +01:00
Lol3rrr
54dad514be Implement 2025 - Day 5 - Part 2 2026-01-09 01:03:43 +01:00
Lol3rrr
fcf2c58b71 Implement 2025 - Day 5 - Part 1 2026-01-09 00:33:29 +01:00
Lol3rrr
4fe10ee925 Implement 2025 - Day 4 - Part 2 2026-01-09 00:15:42 +01:00
Lol3rrr
3d7e206196 Implement 2025 - Day 4 - Part 1 2026-01-09 00:10:39 +01:00
Lol3rrr
25c879c528 Implement 2025 - Day 3 - Part 2 2026-01-08 23:47:10 +01:00
Lol3rrr
fe7df95f17 Implement 2025 - Day 3 - Part 1 2026-01-08 22:23:37 +01:00
Lol3rrr
c40f1c822f Implement 2025 - Day 2 - Part 2 2026-01-08 20:54:19 +01:00
Lol3rrr
c7ad6b02a8 Implement 2025 - Day 2 - Part 1 2026-01-08 20:24:22 +01:00
Lol3rrr
4347fb2131 Implement 2025 - Day 1 - Part 2 2026-01-08 19:42:42 +01:00
Lol3rrr
c7454a0202 Implement 2025 - Day 1 - Part 1 2026-01-08 19:21:43 +01:00
Lol3rrr
44335ca03c Basic README input 2026-01-08 19:20:56 +01:00
34 changed files with 9562 additions and 0 deletions

81
2025/01.rs Normal file
View File

@@ -0,0 +1,81 @@
---cargo
---
static CONTENT: &'static str = include_str!("./inputs/01_1.txt");
#[derive(Debug)]
enum Direction {
Left,
Right,
}
#[derive(Debug)]
struct Rotation {
direction: Direction,
amount: usize,
}
fn main() {
let rotations: Vec<Rotation> = CONTENT.lines().map(|l| l.trim()).filter(|l| !l.is_empty()).map(|l| {
let (direction, raw_amount) = l.split_at(1);
let direction = match direction {
"L" => Direction::Left,
"R" => Direction::Right,
other => unreachable!("Unknown Direction: {:?}", other),
};
let amount = match raw_amount.parse::<usize>() {
Ok(a) => a,
Err(e) => unreachable!("Invalid Amount ({:?}): {:?}", raw_amount, e),
};
Rotation {
direction,
amount,
}
}).collect();
println!("Rotations: {:#?}", rotations);
let mut count: usize = 0;
let mut state: isize = 50;
for rot in rotations.iter() {
if rot.amount >= 100 {
count += rot.amount / 100;
}
let amount = rot.amount % 100;
if amount == 0 {
continue;
}
match rot.direction {
Direction::Left => {
if state != 0 && amount > state as usize {
count += 1;
}
state = state.strict_sub_unsigned(amount);
state = state.strict_rem_euclid(100);
if state == 0 {
count += 1;
}
}
Direction::Right => {
state = state.strict_add_unsigned(amount);
if state >= 100 {
count += 1;
}
state = state.strict_rem_euclid(100);
}
};
println!("Applying {:?} => {} ({})", rot, state, count);
}
println!("Result: {}", count);
}

52
2025/02.rs Normal file
View File

@@ -0,0 +1,52 @@
---cargo
---
static CONTENT: &'static str = include_str!("./inputs/02_1.txt");
fn main() {
let ranges: Vec<_> = CONTENT.split(',').map(|l| l.trim()).filter(|l| !l.is_empty()).map(|l| {
let (raw_start, raw_end) = l.split_once('-').unwrap();
let start: usize = raw_start.parse().unwrap();
let end: usize = raw_end.parse().unwrap();
start..=end
}).collect();
println!("Ranges: {:?}", ranges);
let mut result = 0;
for r in ranges.iter() {
for v in r.clone() {
let v_len = v.ilog10() + 1;
let mut iter = (1..=v_len/2).filter_map(|len| {
if v_len % len != 0 {
return None;
}
let mut seqs = (0..v_len/len).map(|i| {
let offset = 10_usize.pow(i*len);
let mask = 10_usize.pow(len);
(v/offset) % mask
});
let first = match seqs.next() {
Some(f) => f,
None => return None,
};
let invalid = seqs.all(|s| s == first);
invalid.then_some((first, len, v_len/len))
});
let first = iter.next();
if first.is_some() {
println!("{} - {:?}", v, first);
result += v;
}
}
}
println!("Result: {}", result);
}

77
2025/03.rs Normal file
View File

@@ -0,0 +1,77 @@
---cargo
---
static CONTENT: &'static str = include_str!("./inputs/03_1.txt");
#[derive(Debug)]
struct Bank {
values: [Option<(usize, usize)>; 10],
}
fn main() {
let raw_banks: Vec<Vec<u8>> = CONTENT.lines().map(|l| l.trim()).filter(|l| !l.is_empty()).map(|l| {
l.chars().map(|c| {
match c {
'0' => 0,
'1' => 1,
'2' => 2,
'3' => 3,
'4' => 4,
'5' => 5,
'6' => 6,
'7' => 7,
'8' => 8,
'9' => 9,
c => unreachable!("Other {:?}", c),
}
}).collect::<Vec<u8>>()
}).collect();
println!("{:?}", raw_banks);
let mut result = 0usize;
for bank in raw_banks.iter() {
println!("{:?}", bank);
let mut bank_iter = bank.iter();
let mut digits: Vec<_> = (&mut bank_iter).take(12).collect();
println!("Starting Digits {:?}", digits);
for other in bank_iter {
// println!("Looking to add {}", other);
let to_remove = digits.windows(2).enumerate().find_map(|(idx, window)| {
if window[0] >= window[1] {
return None;
}
Some(idx)
});
// dbg!(to_remove);
match to_remove {
Some(to_remove) => {
digits.remove(to_remove);
digits.push(other);
}
None => {
if digits.last().copied().unwrap() < other {
digits.pop();
digits.push(other);
}
}
};
}
println!("Ending Digits {:?}", digits);
let bank_value = digits.iter().copied().rev().enumerate().fold(0usize, |acc, (idx, v)| {
acc + (*v as usize * 10usize.pow(idx as u32))
});
println!("Value {:?}", bank_value);
result += bank_value;
}
println!("Result: {:?}", result);
}

55
2025/04.rs Normal file
View File

@@ -0,0 +1,55 @@
---cargo
---
static CONTENT: &'static str = include_str!("./inputs/04_1.txt");
static GRID_OFFSETS: [(isize, isize); 8] = [(-1, -1), (0, -1), (1, -1), (-1, 0), (1, 0), (-1, 1), (0, 1), (1, 1)];
#[derive(Debug, PartialEq, Clone)]
enum Cell {
Empty,
PRoll,
}
fn main() {
let mut grid: Vec<_> = CONTENT.lines().map(|l| l.trim()).filter(|l| !l.is_empty()).map(|l| {
l.chars().map(|c| match c {
'.' => Cell::Empty,
'@' => Cell::PRoll,
other => unreachable!("Unexpected Input {:?}", other),
}).collect::<Vec<_>>()
}).collect();
let mut result = 0;
loop {
let mut to_remove = Vec::new();
for (y, row) in grid.iter().enumerate() {
for (x, cell) in row.iter().enumerate() {
if cell != &Cell::PRoll {
continue;
}
let neighbours = GRID_OFFSETS.iter().filter_map(|(xoff, yoff)| Some((x.checked_add_signed(*xoff)?, y.checked_add_signed(*yoff)?))).filter_map(|(x, y)| {
let cell = grid.get(y)?.get(x)?;
Some((x, y, cell.clone()))
}).filter(|(_, _, c)| c == &Cell::PRoll).count();
if neighbours < 4 {
result += 1;
to_remove.push((x, y));
}
}
}
if to_remove.is_empty() {
break;
}
for (x, y) in to_remove {
grid[y][x] = Cell::Empty;
}
}
println!("Result: {}", result);
}

46
2025/05.rs Normal file
View File

@@ -0,0 +1,46 @@
---cargo
---
static CONTENT: &'static str = include_str!("./inputs/05_1.txt");
fn main() {
let mut ranges: Vec<_> = CONTENT.lines().map(|l| l.trim()).take_while(|l| !l.is_empty()).map(|r| {
let (start, end) = r.split_once('-').unwrap();
let start = start.parse::<usize>().unwrap();
let end = end.parse::<usize>().unwrap();
start..=end
}).collect();
loop {
let result: Option<(usize, usize)> = ranges.iter().enumerate().find_map(|(idx, r)| {
ranges.iter().enumerate().filter(|(o_idx, _)| idx != *o_idx).find_map(|(o_idx, other)| {
r.contains(other.start()).then_some((idx, o_idx))
})
});
let (idx, o_idx) = match result {
Some(r) => r,
None => break,
};
let first = ranges[idx].clone();
let second = ranges[o_idx].clone();
let new_range_start: usize = *first.start().min(second.start());
let new_range_end: usize = *first.end().max(second.end());
let new_range = new_range_start..=new_range_end;
println!("Merge\n{:?} +\n{:?} =\n{:?}", first, second, new_range);
ranges[idx] = new_range;
ranges.remove(o_idx);
}
ranges.sort_by_key(|v| (*v.start(), *v.end()));
println!("Ranges: \n{:#?}", ranges);
let result: usize = ranges.iter().map(|r| r.clone().count()).sum();
println!("Result: {:?}", result);
}

59
2025/06.rs Normal file
View File

@@ -0,0 +1,59 @@
---cargo
---
static CONTENT: &'static str = include_str!("./inputs/06_1.txt");
#[derive(Debug, PartialEq, Clone)]
enum Operation {
Add,
Mul,
}
fn main() {
let raw_grid: Vec<_> = CONTENT.lines().map(|l| {
l.chars().collect::<Vec<_>>()
}).collect();
println!("Raw-Grid\n{:?}", raw_grid);
let height = raw_grid.len();
let width = raw_grid[0].len();
let separators: Vec<_> = (0..width).filter(|pidx| {
raw_grid.iter().map(|row| row[*pidx]).all(|c| c == ' ')
}).collect();
println!("Separators {:?}", separators);
let ranges: Vec<_> = (core::iter::once(0).chain(separators.iter().copied().map(|v| v+1))).zip(separators.iter().copied().chain(core::iter::once(width))).map(|(s, e)| s..e).collect();
println!("Ranges {:?}", ranges);
let mut result = 0;
for r in ranges.iter().cloned() {
println!("Range {:?}", r);
let values: Vec<_> = r.clone().rev().map(|p| {
raw_grid.iter().enumerate().take(height-1).map(|(i, r)| (i, r[p])).fold(0usize, |acc, (i, v)| {
if v == ' ' {
return acc;
}
acc * 10usize + v.to_digit(10).unwrap() as usize
})
}).collect();
println!("Values: {:?}", values);
let operation = raw_grid[height-1][r].iter().find(|c| **c != ' ').unwrap();
println!("Operation {:?}", operation);
let calc_res = match operation {
'+' => values.into_iter().sum::<usize>(),
'*' => values.into_iter().product::<usize>(),
other => unreachable!("Unexpected Operation {:?}", other),
};
println!("Calculation {:?}", calc_res);
result += calc_res;
}
println!("result {:?}", result);
}

100
2025/07.rs Normal file
View File

@@ -0,0 +1,100 @@
---cargo
[profile.dev]
opt-level = 3
[dependencies]
nalgebra = "0.34"
---
use nalgebra::DMatrix;
use std::collections::HashMap;
static CONTENT: &'static str = include_str!("./inputs/07_1.txt");
#[derive(Debug, PartialEq)]
enum Cell {
Empty,
Split,
Sourc,
TBeam,
}
fn main() {
let mut grid: Vec<_> = CONTENT.lines().map(|l| l.trim()).filter(|l| !l.is_empty()).map(|l| {
l.chars().map(|c| match c {
'.' => Cell::Empty,
'S' => Cell::Sourc,
'^' => Cell::Split,
other => unreachable!("Unexpected Input {:?}", other),
}).collect::<Vec<_>>()
}).collect();
let height = grid.len();
let width = grid[0].len();
let nodes: Vec<(usize, usize)> = grid.iter().enumerate().flat_map(|(y, row)| {
core::iter::repeat(y).zip(row.iter().enumerate().filter(|(_, c)| c != &&Cell::Empty)).map(|(y, (x, c))| (x, y))
}).chain((0..width).zip(core::iter::repeat(height))).collect();
println!("Nodes: {:?}", nodes.len());
let node_map: HashMap<(usize, usize), usize> = nodes.iter().copied().enumerate().map(|(idx, v)| (v, idx)).collect();
let mut adj_matrix = DMatrix::from_element(nodes.len(), nodes.len(), 0);
for (sx, sy) in nodes.iter().copied() {
match grid.get(sy).map(|r| &r[sx]) {
Some(Cell::Empty) | Some(Cell::TBeam) => unreachable!(),
Some(Cell::Sourc) => {
let x = sx;
let mut y = sy+1;
while grid.get(y).map(|r| &r[x]) == Some(&Cell::Empty) {
y += 1;
}
let s_idx = node_map.get(&(sx, sy)).unwrap();
let t_idx = node_map.get(&(x, y)).unwrap();
adj_matrix[(*s_idx, *t_idx)] = 1;
}
Some(Cell::Split) => {
for x in [sx-1, sx+1] {
let mut y = sy+1;
while grid.get(y).map(|r| &r[x]) == Some(&Cell::Empty) {
y += 1;
}
let s_idx = node_map.get(&(sx, sy)).unwrap();
let t_idx = node_map.get(&(x, y)).unwrap();
adj_matrix[(*s_idx, *t_idx)] = 1;
}
}
None => {}
};
}
let source = nodes.iter().copied().find(|(x, y)| matches!(grid.get(*y).map(|r| &r[*x]), Some(Cell::Sourc))).unwrap();
println!("Source: {:?}", source);
// println!("{}", adj_matrix);
let mut routes = 0;
let mut result_matrix = DMatrix::identity(nodes.len(), nodes.len());
for i in 1..height {
result_matrix *= &adj_matrix;
let versions = (0..width).map(|x| {
let s_idx = node_map.get(&source).unwrap();
let t_idx = node_map.get(&(x, height)).unwrap();
let routes = result_matrix[(*s_idx, *t_idx)];
routes
}).sum::<usize>();
println!("[{}] Routes {}", i, versions);
routes += versions;
}
println!("Total Routes: {:?}", routes);
}

94
2025/08.rs Normal file
View File

@@ -0,0 +1,94 @@
---cargo
[dependencies]
slotmap = "1"
---
use slotmap::SlotMap;
use std::collections::HashMap;
static CONTENT: &'static str = include_str!("./inputs/08_1.txt");
fn main() {
let boxes: Vec<(usize, usize, usize)> = CONTENT.lines().map(|l| l.trim()).filter(|l| !l.is_empty()).map(|l| {
let (first, rest) = l.split_once(',').unwrap();
let (second, third) = rest.split_once(',').unwrap();
let first = first.parse::<usize>().unwrap();
let second = second.parse::<usize>().unwrap();
let third = third.parse::<usize>().unwrap();
(first, second, third)
}).collect();
let mut circuits = SlotMap::<_, Vec<(usize, usize, usize)>>::new();
let mut box_circuits = HashMap::<(usize, usize, usize), slotmap::DefaultKey>::new();
println!("Boxes\n{:?}", boxes);
let mut distances: Vec<_> = boxes.iter()
.flat_map(|s| core::iter::repeat(s).zip(boxes.iter()))
.filter(|(s, t)| s != t)
.filter(|(s, t)| ((s.0.pow(2) + s.1.pow(2) + s.2.pow(2)) as f64).sqrt() < ((t.0.pow(2) + t.1.pow(2) + t.2.pow(2)) as f64).sqrt())
.map(|(s, t)| (s, t, ((s.0.abs_diff(t.0).pow(2) + s.1.abs_diff(t.1).pow(2) + s.2.abs_diff(t.2).pow(2)) as f64).sqrt()))
.collect();
distances.sort_by(|(_, _, d1), (_, _, d2)| d2.partial_cmp(d1).unwrap());
// println!("Distances\n{:#?}", distances);
let mut last_connection = None;
while box_circuits.len() < boxes.len() || circuits.len() > 1 {
let (first, second, distance) = distances.pop().unwrap();
println!("Connecting:\n\t{:?} <=> {:?}", first, second);
let first_circuit = box_circuits.get(first);
let second_circuit = box_circuits.get(second);
println!("\tFirst Circuit: {:?}", first_circuit);
println!("\tSecond Circuit: {:?}", second_circuit);
match (first_circuit.copied(), second_circuit.copied()) {
(Some(fc), Some(sc)) if fc == sc => {}
(Some(fc), Some(sc)) => {
let second_boxes = circuits.remove(sc).unwrap();
let first_boxes = circuits.get_mut(fc).unwrap();
for b in second_boxes {
first_boxes.push(b);
box_circuits.insert(b, fc);
}
last_connection = Some((first, second));
},
(Some(fc), None) => {
circuits.get_mut(fc).unwrap().push(*second);
box_circuits.insert(*second, fc);
last_connection = Some((first, second));
},
(None, Some(sc)) => {
circuits.get_mut(sc).unwrap().push(*first);
box_circuits.insert(*first, sc);
last_connection = Some((first, second));
},
(None, None) => {
let circuit = circuits.insert(vec![*first, *second]);
box_circuits.insert(*first, circuit);
box_circuits.insert(*second, circuit);
// println!("\tCreated Circuit: {:?}", circuit);
last_connection = Some((first, second));
}
};
}
let last_connection = last_connection.unwrap();
println!("Last Connection: {:?}", last_connection);
println!("Last Connection Distance: {:?}", last_connection.0.0 * last_connection.1.0);
let mut circuit_list: Vec<_> = circuits.iter().map(|(k, v)| (k, v.len())).collect();
circuit_list.sort_by_key(|(_, v)| core::cmp::Reverse(*v));
println!("Circuits: {:?}", circuit_list);
let result = circuit_list.iter().take(3).map(|(_, v)| *v).product::<usize>();
println!("Result: {:?}", result);
}

153
2025/09.rs Normal file
View File

@@ -0,0 +1,153 @@
---cargo
[profile.dev]
opt-level = 3
[dependencies]
rayon = "1"
---
use rayon::prelude::*;
static CONTENT: &'static str = include_str!("./inputs/09_1.txt");
const PRINT: bool = false;
#[derive(Debug, PartialEq, Clone, Copy)]
enum Cell {
Empty,
Red,
Green,
}
const _T: () = assert!(1 == core::mem::size_of::<Cell>());
fn main() {
let points: Vec<(usize, usize)> = CONTENT.lines().map(|l| l.trim()).filter(|l| !l.is_empty()).map(|l| {
let (first, second) = l.split_once(',').unwrap();
let first = first.parse::<usize>().unwrap();
let second = second.parse::<usize>().unwrap();
(first, second)
}).collect();
// println!("Points:\n{:?}", points);
let grid_width: usize = points.iter().map(|(x, _)| *x).max().unwrap()+1;
let grid_height: usize = points.iter().map(|(y, _)| *y).max().unwrap()+1;
let mut grid = vec![Cell::Empty;grid_width*grid_height];
for parts in points.windows(2).chain(core::iter::once(&[points.last().copied().unwrap(), points.first().copied().unwrap()] as &[(usize, usize)])) {
let start = parts[0];
let end = parts[1];
let g_points = line_point_iter(start, end);
grid[start.1 *grid_width+ start.0] = Cell::Red;
for (x,y) in g_points {
grid[y*grid_width+x] = Cell::Green;
}
}
print_grid(&grid, grid_width, grid_height);
let inner_point = points.windows(2)
.filter(|p| {
let start = p[0];
let end = p[1];
start.0 == end.0
}).filter_map(|p| {
let start = p[0];
let end = p[1];
line_point_iter(start, end).next()
}).flat_map(|(x, y)| {
[(x-1, y), (x+1, y)]
}).filter(|(x, y)| {
(0..grid_width).contains(x)
}).find(|(x, y)| {
let c = (0..*x).map(|x| grid[y*grid_width + x]).filter(|c| *c == Cell::Green).count();
c == 1
}).unwrap();
println!("After filling");
print_grid(&grid, grid_width, grid_height);
let largest = points.par_iter()
.flat_map_iter(|p| core::iter::repeat(*p).zip(points.iter().copied()))
.filter(|(f, s)| f != s)
.map(|(f, s)| (f, s, (f.0.abs_diff(s.0)+1) * (f.1.abs_diff(s.1)+1)))
.filter(|(f, s, _)| {
let x0 = f.0.min(s.0);
let x1 = f.0.max(s.0);
let y0 = f.1.min(s.1);
let y1 = f.1.max(s.1);
(x0..=x1).flat_map(|x| {
core::iter::repeat(x).zip(y0..=y1)
}).all(|(x, y)| in_grid(&grid, grid_width, grid_height, (x,y)))
})
.reduce(|| ((0,0), (0,0), 0), |acc, (f, s, a)| {
if a > acc.2 {
return (f, s, a);
}
acc
});
println!("Largest: {:?}", largest);
}
fn print_grid(grid: &[Cell], width: usize, height: usize) {
if !PRINT {
return;
}
for y in 0..height {
for x in 0..width {
match grid[y*width+x] {
Cell::Empty => print!("."),
Cell::Red => print!("#"),
Cell::Green => print!("X"),
};
}
println!();
}
}
fn line_point_iter(start: (usize, usize), end: (usize, usize)) -> Box<dyn Iterator<Item = (usize, usize)>> {
if start.0 == end.0 {
let s = start.1.min(end.1);
let e = start.1.max(end.1);
Box::new(core::iter::repeat(start.0).zip(s..e).skip(1))
} else {
let s = start.0.min(end.0);
let e = start.0.max(end.0);
Box::new((s..e).zip(core::iter::repeat(start.1)).skip(1))
}
}
fn in_grid(grid: &[Cell], width: usize, height: usize, (x, y): (usize, usize)) -> bool {
if grid[y*width+x] != Cell::Empty {
return true;
}
let c = (0..x).map(|x| grid[y*width + x]).filter(|c| *c != Cell::Empty).count();
match c {
0 => false,
1 => true,
2 => false,
_ => {
let c = (0..y).map(|y| grid[y*width + x]).filter(|c| *c != Cell::Empty).count();
match c {
1 => true,
_ => false,
}
}
}
}

133
2025/10.rs Normal file
View File

@@ -0,0 +1,133 @@
---cargo
[profile.dev]
opt-level = 3
---
use std::collections::{HashMap, hash_map::Entry};
static CONTENT: &'static str = include_str!("./inputs/10_1.txt");
#[derive(Debug)]
struct Machine {
desired_lights: u64,
buttons: Vec<u64>,
}
fn main() {
let machines: Vec<Machine> = CONTENT.lines()
.map(|l| l.trim())
.map(|l| {
let (lights, rest) = l.split_once(' ').unwrap();
let buttons: Vec<_> = rest.split(' ').take_while(|p| p.contains('(')).collect();
let joltage = rest.split(' ').skip_while(|p| p.contains('(')).next().unwrap();
(lights, buttons, joltage)
})
.map(|(raw_lights, raw_buttons, raw_joltage)| {
let raw_lights = raw_lights.strip_prefix('[').unwrap().strip_suffix(']').unwrap();
let lights = raw_lights.chars().enumerate().map(|(idx, c)| {
let v = match c {
'.' => 0,
'#' => 1,
c => unreachable!("{:?}", c),
};
(idx, v)
}).fold(0u64, |acc, (idx, v)| {
acc + (v << idx)
});
(lights, raw_buttons, raw_joltage)
})
.map(|(lights, raw_buttons, raw_joltage)| {
let buttons: Vec<_> = raw_buttons.iter().map(|button| {
let button = button.strip_prefix('(').unwrap().strip_suffix(')').unwrap();
let switch: u64 = button.split(',').map(|c| {
let v: u64 = c.parse().unwrap();
1 << v
}).fold(0u64, |acc, v| {
acc + v
});
switch
}).collect();
(lights, buttons, raw_joltage)
})
.map(|(lights, buttons, _)| {
Machine {
desired_lights: lights,
buttons,
}
})
.collect();
println!("{:#?}", machines);
let machine_states: Vec<_> = machines.iter().map(|machine| {
let mut states: HashMap<u64, Vec<u64>> = HashMap::new();
let mut queue = vec![0u64];
while let Some(state) = queue.pop() {
let new_states: Vec<_> = machine.buttons.iter()
.map(|button| {
state ^ button
}).collect();
match states.entry(state) {
Entry::Occupied(_) => {}
Entry::Vacant(ventry) => {
let new_states = ventry.insert(new_states);
queue.extend(new_states.iter().map(|v| *v));
}
};
}
states
}).collect();
let distances: Vec<_> = machine_states.iter().map(|states| {
let mut distances: HashMap<u64, (Option<u64>, usize)> = states.keys().map(|node| {
(*node, (None, usize::MAX))
}).collect();
let mut q: Vec<u64> = states.keys().copied().collect();
distances.insert(0, (None, 0));
while !q.is_empty() {
q.sort_by_key(|n| core::cmp::Reverse(distances.get(n).map(|(_, d)| d).unwrap()));
let u = q.pop().unwrap();
let (_, u_distance) = distances.get(&u).copied().unwrap();
for neighbour in states.get(&u).unwrap() {
if !q.contains(neighbour) {
continue;
}
let new_distance = u_distance.saturating_add(1);
let (neighbour_prev, neighbour_distance) = distances.get_mut(&neighbour).unwrap();
if new_distance < *neighbour_distance {
*neighbour_prev = Some(u);
*neighbour_distance = new_distance;
}
}
}
distances
}).collect();
let mut total_steps = 0;
for ((machine, states), distances) in machines.iter().zip(machine_states.iter()).zip(distances.iter()) {
println!("{:#?}", machine);
//println!("States:\n{:#?}", states);
//println!("Distances: {:#?}", distances);
let (_, steps) = distances.get(&machine.desired_lights).unwrap();
println!("Required Steps: {}", steps);
total_steps += steps;
}
println!("Required Total Steps: {}", total_steps);
}

57
2025/11.rs Normal file
View File

@@ -0,0 +1,57 @@
---cargo
[profile.dev]
opt-level = 3
[dependencies]
nalgebra = "0.34"
---
use nalgebra::DMatrix;
use std::collections::HashMap;
static CONTENT: &'static str = include_str!("./inputs/11_1.txt");
fn main() {
let parts: HashMap<[char; 3], (usize, Vec<[char; 3]>)> = CONTENT.lines().map(|l| l.trim()).map(|p| {
let (key, rest) = p.split_once(':').unwrap();
let key = key.trim();
let rest = rest.trim();
let key: [char; 3] = core::array::from_fn(|idx| key.chars().nth(idx).unwrap());
let rest: Vec<[char; 3]> = rest.split(' ').map(|p| {
core::array::from_fn(|idx| p.chars().nth(idx).unwrap())
}).collect();
(key, rest)
}).chain([(['o', 'u', 't'], Vec::new())]).enumerate().map(|(idx, (key, v))| (key, (idx, v))).collect();
println!("{:?}", parts);
let mut adj_matrix = DMatrix::from_element(parts.len(), parts.len(), 0u64);
for (src, (src_idx, targets)) in parts.iter() {
for dest_idx in targets.iter().map(|t| parts.get(t).map(|(i, _)| i).unwrap()) {
adj_matrix[(*src_idx, *dest_idx)] = 1;
}
}
println!("{}", adj_matrix);
let you_idx: usize = parts.get(&['y', 'o', 'u']).map(|(idx, _)| *idx).unwrap();
let out_idx: usize = parts.get(&['o', 'u', 't']).map(|(idx, _)| *idx).unwrap();
let mut total_routes = 0;
let mut connectivity_matrix = DMatrix::identity(parts.len(), parts.len());
for length in 1..=parts.len() {
println!("Length: {:?}", length);
connectivity_matrix *= &adj_matrix;
let routes: u64 = connectivity_matrix[(you_idx, out_idx)];
println!("Routes: {}", routes);
total_routes += routes;
}
println!("Total Routes: {}", total_routes);
}

4604
2025/inputs/01_1.txt Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,10 @@
L68
L30
R48
L5
R60
L55
L1
L99
R14
L82

1
2025/inputs/02_1.txt Normal file
View File

@@ -0,0 +1 @@
17330-35281,9967849351-9967954114,880610-895941,942-1466,117855-209809,9427633930-9427769294,1-14,311209-533855,53851-100089,104-215,33317911-33385573,42384572-42481566,43-81,87864705-87898981,258952-303177,451399530-451565394,6464564339-6464748782,1493-2439,9941196-10054232,2994-8275,6275169-6423883,20-41,384-896,2525238272-2525279908,8884-16221,968909030-969019005,686256-831649,942986-986697,1437387916-1437426347,8897636-9031809,16048379-16225280

View File

@@ -0,0 +1 @@
11-22,95-115,998-1012,1188511880-1188511890,222220-222224,1698522-1698528,446443-446449,38593856-38593862,565653-565659,824824821-824824827,2121212118-2121212124

200
2025/inputs/03_1.txt Normal file
View File

@@ -0,0 +1,200 @@
7455337345554393449454442744452533444624555444444525654744644442462265544584444244243377662874573954
4444433574444444521434318444437434434744463343344862443745783646353544443448334445344547344244354484
4454325334739566743455434465374426494464323643934468434765454444555535464455456547468454544534444637
2253633222422222521322222224224222262272124222312722231222222262212233722221212262222125452412392631
1222111334214231341321332223311232114113234132421133324233143211344224341223243324234444111131256789
5552574722261445226642632635456622675165425672633256621353613292945452142158642643242263631127224735
2332532231343123261241313224232361514572322232242233225222222332337363211613222322578362253152228332
3444583257424284574732453333613283357533643446346353834484734436344577745464538846857954427384448844
4455353554554545555555435654454545177665544544452544365893276544438552455556355859553169554555553594
1212213222211325322312232432222122322233322142223232412322222221152222512222212325222322222234732222
3532323431342366332734322335431332584123282362342232521333623521562231433242242323322322423422523343
5393555646342743842471375157346322364344623255433257656427163652244223162252553237255554336243245323
3536335312473322623951263331543434532432322323223374432222256333153252273359232323732652343722222372
1252436712222222227342227122334142252325225422217222224232346334227241322333312142925215211242263821
4445555564354545351744554455354455555453433655437554554331545446444524553643744655344554535344455553
2262334913222223223222122223222542222244222332211232212222222243321222516132237221231222622422222222
4468455455454384872948296641655953578334969369425239274865655978655569965666183954746455448625424753
2642222235131473533342421127644414525211214251112254452322544224663442221523642522242231223443225256
3265372365616256524333422322621222322523323437333253263435362324336432454572353226224354423233134426
3221326322223112223252226442121132123233513132423222212223424224223542223321323211212225421221242243
3232232222334331212321234221222222232113332355232212312242123322232222232422312232225162122132251222
5343224422213735433244533154442143423523327355434263329434214213236233442445413423225342443246453344
5515251446445935674642752243474223533255352762275543236227742345426232244442425425826332414252252543
2212212212316621222252782254641228332222324926235622222226242524622512842226424623542242423252221121
4368254754644555445525653536457444356537652556558555754544544553466455574455756245445766555525335645
3422222122216223332744331214143225142461454321461464262243333322431534123232122463232121524322231434
6524455585758455737455464524534243956662657453835763542313465584777748455655765544465565965623576554
3335453212456437413476673345295332446187757978226246824954372733439348322344143594456842342542441355
3266136442122221382442213236641432262514453232142232231872743323274651753726252423372732133241232424
4463494444654654547646344467365354636515314987585456434747496634624965464549639756587573483854684444
2114123232332223422332232232324222233332223238224624372234353237323322323232322523286332233322233422
3522223123127137322322111421322764249111222222331213323127222224242215222236422235221222312733222422
4482334574463534742435542547664747738934474673437414437357673533474657275432733437557333573234749133
3252768325634699291342622899223547262426392936924332232282931223522478227734563329365815593433222983
4685444454944384634544474736544447444444454846534443346644454434933452334454433646424475494433545444
2152253242253323231333223353133533222222423441452433235343342343232346421422574325221332313214255232
2421212323123323322222217332322321332283225132213241223442323221323321222233212232233133312222214322
7146222363223174322692392522888821382224245264742245427546245222484382852676596328722171274228967123
1525243154323112334233223353215221324112522123432382243314334412312233232134114242633222143233542333
4265433333352336332233836423358353115432244294333325232343333515323514533335353333433123334332532433
1222124222222521222463223272581222154522322423212262241221222812232522222222242252222115224212124222
3432383527463332653453534633363376638222333544133419552343354676223535353345446523333633347334332252
3234224222422732343444232354532223212429152224641323214223434272344444323255342323224423322822314422
3763565345344647646337443767572476638536478155583358756536652836474354535735347388435557463735783366
3355533244531433245243544115333323332245323331233333233237167221464343363535346342132342224322333343
5327552336562262434722626365545242466151553275152553556766256663265436418532963564322653364626225334
4422322322222532123142225222215225212433222122222352442243125212433114222251342452242452212452522212
3335333334326467246434462423344343433643463373385387333433333334694385835431363336233234332344654336
3333243432243333333222232332323332334333333353353333353443333112153333133231237313313233333332212923
4443454444455463443341354544545344353543454545543244234333444542434244443343344435333453743234524444
2633323482566579446243426554326423624333735265331536433363536394453321623353455234332532546463353743
3343333433231233943323144521623343442333734316233323533613333283332344334333343243334432333322142433
3133333235322333442233332223333132433232213213222333723232333321231333321333333324243213233312332213
2221222222222211222222222222112221233322222211222322234211332122322212222323121122242222222122233222
3315563592223432211221326353234221231424372222213226322126222429531322194683223433221322211312213222
1232233644235222811491249211423422212322222212232234911123322352331222323432532392222311212225233713
5223266263378466252643662525357236467544255512423635522575232271542426555123254734236661365774422326
4322382264334332333334442533643443336215235233335363227532323363192373636363423343523544354813634536
8674569592358876363656665765926665661757555381467588652455475368877642358753477378455772873563814683
4224532163324426337442636545231152142563225357421392372316243263662223536223462283325652226655242216
3352222233322433412483345343813353763233232724323235343345359242136432364422634433342326332314347323
3124222362226222523223254222292222661221325321452221434232222232313222518261421224222222314231252242
1222123142322112262612326221225423225221522255121243112222222124227122222431234214212322255222225222
4652694444556369478794843959967447246246752835423825854467545866755658556689544718454533353234278666
3735551322255413643365213643562175698218123272223233263528241132655224375535325423227267549223332324
2313235343323334323323335532413342233533421233333333243244264332241533351321322331434343323233234355
1432233324243323532434323444124433233343436332432341433243333332433234432334354434434333534336232414
6334437343533335553953933733393335953336343434373833324539133347253733336925243483737369613333333343
8633547165561536263543468475833666735665535793445546377734675265615277634334824353438735426966442749
2649226533124333434254296312244432739461239498355268472219224638533627263672223374533436232323141443
7899656565357759337665965746563768669974836674577464786556756634956474678585545465574485368885699347
2352233222235234422155222452193144552263413832224664546335255215533224256136626224248632246453226112
3272293352725532324755622239342441456732342272445252322521189336732426823823522634354432222266142232
3422222222211614126222221423232232224523246132223241212232422247143522322374322122222212224476226224
2223232723232323322232337312222122324323424762543232323346243233334223128323323332224232333232152442
3553525343343475333352734353543443444435151653454344464443553443332233446332434334343432243353234444
2524443424445544343444456443445423544444453233542144444446343444348343344445244434345443444254645344
3536633533264333341445332524534323323433333358336346344438342322935343733284544435643353134363444353
2222232512312222233232323112222131113122243211213221322234222122122322123222212225222221122222222222
4235343442633332414433543324434232334354442344446243323432433434144435444232454323442234344433435243
4454444632434434445344562544643454454344233544344454444544244654934443443644436623534444445444653453
2233523392325613434441235347343232434456322344455242423433443435363641332447341346243324614173425674
3334243321121223233733132221643223423344112923131222632422332232352323234352833322534313335423232223
5588247538579847643379456728728768837876785844978386485793434845567863553987469688875459226635665259
9336533525933323495434437365833435436752346562443556363872337844924579596359635766334357427543563399
3213226733222333352262234332242132332122212224232244243734221332222313224332322322233223215332333436
2335311332324223633265633533323333233322622656333323232323461343112343223632221332333322532213121233
3333353232334333333232332232223343233232233432332333243233232313362522332333331331332342233233222453
5213615362212434163731544243456522222352413136134355782332543223343461432261552252423473545132322432
2669954282344382157328173922924146246762272524639643592584856362634722487556665869321666642952525493
6564655755565455556665545655455563556645465545545553729456553452564466555556556655545545453435552565
1143213235534215114151142552434121314342342422222512212434452551435233423545225435332134334134516789
4433443234334242234426424634543433423344433545444434434343534355353434444364453433344345435441124243
6356647843557437854415775855576575446763366866357935374726754556674665463773725554475867353765673646
2122354324322223422222232422144443222534222125245514213322222412211224942342442222543412233225323322
7535435924672257634573455252452635774552736766439935422556563633363655335342464565621853537237437957
5133243443832333242143514221332243242223133343453242834464123531422344443336414274418314343244453212
7444766457955566574555667658857537786678677985767879664876749698587956476577988744676474557777467574
3333442233244415232833134423444523214444323332341232234224244243132225324462355543323237335735335312
2223323253523453242241313422222223221245222421232335452129223522222225234262224224442425423222152624
3346242122332333333332211265323123323331324421336233433353232336232343117323333533233333323326343133
2332423323436323333432412333333142331922313334322324432333322223332832321323343653333332242314313333
1613345333333422223335332218433334323231342342343314474332222373334323237273231623721422633633325322
3432324322922514231213223312332341141633223333143241232222339322122434322324223225522722322443232321
1343733232453822432221223394136616422262144424223234261242325613442423342172344233432216331135251365
1243223223224322222311221213322121222148212122322222212528212127421372451221221311223292522123222222
4434445544434652434424326434234246425432433547343454444543355543444446346354344354666644614533184395
3234332543342332253334443253234333231242242332443344233214341122232944142433121225323632234222454223
5514243243535324433233113345213252353333226533233533523354233335655323555433331352335544353463313454
2231362162422422614277122122124729225412119144422221248112424222272452222112233224812232261522224221
5746592253277244362522234334616194262598566434433212542572666255222432378764723621416255334632262728
5453632552313337422434145644133753354261243546453263616463331443536455453243643534454565323444234794
5153233342311433633432643442435234443422633334333333733334332521457432333723433232324325343453323233
1653623742923576342854326672643312372513336531767813462244612227416624222513936813528344118532745623
2221222222122222212223322231111122233232222222272122322222232222212222322223222221223222231222221222
2211621221223222211122222222322222222222221222211121424222212412122332222224722212121224221422222252
2224234242325323722553325423223525242217673123327313332284711273227422423263232311292855222243425223
6566652568328785451445335435234375538336754455368473444664254547454834554456566447554453548573443535
7473322863227234651462237132332451327222118435354237551357232676311652383212513422244322223323123556
3284522333252233222722433422314422151156253243725242322245235221243246226143941885823518222222432423
1122227534635557266653955132524264533522515613245673762353345143462755643122233124353756142214712212
4475444474758433543424349444444855353449244292434746533744443693359414474444442442347354417563444255
4253324323132221222122343222222222323111132112323222322421323113211222222322224322333222212243213322
2343434445335254463215546243455435545253424429553435532355342455565542445232532555555351443534631645
3263333251172223322542123231333222323233133551343623212152423523232322332431342115214229311445723364
4375224447443434424625314348442323144337447242652582335334123345544345452843344257362342225132342344
1615263171177374322722537251751471355447724661154125232722553214765767545622543654174524772674152689
4132437322454334621513227856368313753441422524244348464532423246522323242273346123338475242243523233
4113223222233333323333333323333332434624333523233333733333333233433233342313431735233322225434456442
6841753344562684333466242957564721249234374553139447565183252225344223463436333322244462233484122436
2325521175241435122232223154322121213243135221252542582231843122215222222124415413245252531225212224
6156536646252447554342464537646547444536355554427444336556565444544625455424345336555634554657425566
4546455534473345555455555451353355545334356435553564251343555335557564574352435455555455253542474454
2213222322212412222922238233242232211221223212242132111322222222221122212522224312122232122522222222
2323233122243323323224221232223333222323232353313144233232322323422231333333126312324131133321222221
5443455416534455543945433453435254563345523251425534425425145334531524455834523535324445225565424445
3344143222333635421222334362132332322324422334254332232323333534423132222322232221413222331122432323
7568665736454256637755655635842455528464535336755175735443465848559465845423323417437335485453256677
5644243324433341223237633431132222232143452224142352322245421325233242262451234233247522216522274122
6253322222111323124231221522451542813232233225211222212212222322322422222222223422512215542221233323
2412342222221364254642431141424255425455216466523273523243144212766226431422245643542241232663122124
4666562662456411232542235353156133544135624413142235364431436235343126336551255413646432643635253789
2212212232124224323213262624542342316124232213341212412214232233222233532239224313143521233222322114
1512122224526544233333174434142324444724142115351232342332223642434222321244235215322212131223342329
4446465324543414424544444315344434444424432343334143143331335243423334344342343363454324344334324444
2526233344242317153434352433455234542223513442452252122425525513253525543255443351421222352554252122
2133222322325533244125323533282324222332223323322335322432322131232143131422222122122242332223312132
2223322322212211222223121262223321526362326126122233432262222212232622222321123123222321212112323322
3332231334633133332113222432222313321333433331224322232233222343522334323434233332833232522332333532
7543845444333234448333445538314524523353332434334333343853337352133325533533348444632376132333623332
2425241335534465222445972373142322255143632353335254429354322213352331345455255554134737425347225215
2222222221222222222222522222122112222212211232222522222252221214232422221223211222222123242211232252
3234262373235122322213223411122333213243132522823142225332132624436852323323236238323231435255243338
5643244323232322244224221362222262321312315324225432316271225331163433195524352641122223252224334614
4425923234968499845352611234424545288768625563463757654742384266653228263353881565522142651293526821
7345642821551771625344317583834873168383236262675128312173852581762387236528521115414155624672741639
3254342333237346463377753152511735462423726772325562337724554453572541433763446366314454624145673236
6222737314533145845223454334252313245222324413235471244244414422534341242447344321315321444153341432
5333536223684455353735325813236394247465428433333653467449854636365583854474963658556389522948174482
5465685546643689556668878388667675735864275487636845888856765765822588585898354456986586688453556387
3725143425422423722322222233582324743475543333422353312222232121523335352131144544333232112532224322
2414642222413322362741642248282334758277644264523232523337242215836751388313163722735626236418262443
3316322347423632234224752322124343456527333424363725331234117422145334433482127732344332444221742245
4223222221251322322212212321422221222222111121121221222222212232223322222422112223222212242112222231
3323432335934565333352325535333423433323454445226233812332333544816852353323374333434332533257432446
4222221221222353222243311222212222242517222522222232222324222722221323225222131227222232223322222121
2446825528647466443438274344544542683344764537247846746455427744737344246654724466658537543127624744
3523321243734222442522521433153347172462444432444533235624463434425444525427436322414324342634214322
3232313223142261213133222322232323332221233232132121232321231321233432224313332133233322211232213333
3114333243232433241543334432453444532542363423334222834342243832443322423332333346424353133342342334
5234123223223222233463233423234233122214144213232414413343235222237522123133234332243524334242134243
3245434242324946345526234333232323244344446823242252382733935323486423552234258346533833433964532843
3836799347896334776851595238933733533879666525245657967794489337598932391756933639589334883463353334
2152321332232233233332322223235542435675323256212362233222552234323263133385323236351521222542522322
5966354939476987899986989687855573869924283589968842379764965357999636654357384265555439553766877655
7685665481446658736584765655364457426642655865563766265435366585655552762662564464323656786416865515
4236276455222222349523555343945253317265423313396436333321325654534126251546243366335222245245435323
4225473534454461525545433423555242444744344325245243255342315254435434252334241532334559342436525572
2635223321122222422241322242552122131332523124411132222411224223254351522122212223112262464221222494
2751217142326546656335223329223255233442894823343532275273236232694934344424739234314347829567232226
1232223232222123321212232212232234232222225212234222131322223323222122121242222222232224121233323322
6653636573797545642394466355444544494484836342483676646759479544374436656552324534385425334564564255
5222222223222122123212222481422232223232222222242322322222325223311212133222222342323523235212523222
4439637433333293334194643323523951285775123638734823326344132295535522872962336735493794776764233435
3163581424927226661275422662122222235252122632222212122632228514251419837512242222622134122228222641
8225879656457974862287642494698463183862865295378236479286644872679555284468263248517747236924856434
2613252245212322311562427522262325622235242637633222122251812282266665822121732232562165542122267632
2122622493223823342889613331282326764825222736222322214223952226233152353383821323223772222363485443
3513432323285436333733342243734838323586531657736862678123634748563336365357334332365835567353333682
3633423574264452474434463341544747244432446459342523646374346474443334426944443341644285443342344447
1222222322223122232243221122218222213235232341212722313122222223231222112122212323322231242423322232
3533433335544352442323444631583534444448444345274444634357364444432563343746463473545544453333243354
7254444246643343464444344213935329424294245474447236347173414424373694343244732243214464124432365435
3445562333551456542324322322364534666321653245222853464625266662634226653665122527457673665526467566
4224332224233425222223143242212232222261222222423222623224253414643421253322232272214142332221413322
6372523334363333333133693123331825313343248233349367368176633151333628954322341312437336336424433322
4343324633333923333322433363223634523326743433334148243343241141652334334444234432413332132461233521
5252438319415273293427372133226734332423122833732726783676642323133293798613547229836574427399327872
4645454654356354462444454645556453541565453541553441352645353534544844653646636545455555524554425246
5488291583558624714855444945264594545554545534554544945559444474355555865355794954423524154554416461

View File

@@ -0,0 +1,4 @@
987654321111111
811111111111119
234234234234278
818181911112111

139
2025/inputs/04_1.txt Normal file
View File

@@ -0,0 +1,139 @@
@..@@.@..@@@.@@@@@@.@@@@@@@@.@@@.@@@.@.@@@.@....@@@.@...@@.@..@@@@@.@@@.@@...@@.@@@.@@@@.@@@@.@.@@@@..@@@@@@.@.@.@.@@@@.@@.@@.@@@@..@.@.@@@
.@..@@@@@@@.@@@@.@@@@..@@.@.@..@@@.@@@@@@...@@.@@.@...@@@..@.@@@@......@@@@@@@.@@.@.@@@@..@....@.@..@@.@.@@@.@.@@@.@@@@.@@.@.@@..@@@@.@@.@@
@@@..@@@@@@@@@@@.@..@.@@@@@@@@@....@.@.@@@@@.@....@@@@@@.@@@@@@@@@@@@@.@.@@...@@@@@..@@@@@.@..@@@@.@@@@.@@@@@@@@.@@@@@@@@@@@@@@@@.@@@@@@@.@
@@@@@@@.@@@.@.@@@.........@.@@@.@@@@@@.@.@@@@@@@@..@@@.@@@@@@.@.@.@.@.@@@@@@@@.@@@@@@.@...@@@.@@.@@.@@@@@@@.@@.@.@.@@@@.@.@@@.@@@.@@.@.@@@.
..@@..@@@.@@@@@@@.@.@.@@.@@..@@...@@@@@.@@@@@.@@.@@@.@@.@@@@@.@@.......@@..@@..@.@@.@@.@@@.@.@@@@.@..@@@.@@@@@.@@....@@@@@@.@@@@.@@.@@@.@.@
@@@@@@......@@@..@@.@@.@...@.@.@@@@.@.@.@...@@@@.@.@@@@@@@@@@@@...@....@@..@@.@@@@@@@@@..@@..@@@.@@@@@@@@@.@@@.@@@@@.@@@.@@@.@@@@@.@.@.....
.@@@@.@...@@@....@@...@@@@@@@@.@@....@.@.@.@@@@@@@@@@@.@@.....@@@@@@@@@@@.@.@@@@@@@@@@@@.@@@.@@@@@.@@@@@@@..@.@@....@@@..@@.@.@.@.@.@.@@@@.
@@.@@.@@@.@@@@.@..@...@.@@@.@.@@@@..@..@.@@@.@@@@.@...@@@@@@.@.@@@...@@.@@@@@@@@@..@.@@@..@@@@@@@@@@.@@@.@@@@@@...@.@@.@@@.@@...@@@.@.@.@@@
....@.@..@@@@@.@@@@@@@@@@..@@..@@@@.@@.@.@.@@.@@@.@@.@@@@@@.@@@@@.@@.@@@@@..@@.@.@@@..@@@@.@@@@.@@@@..@@@@@@@@..@..@.@.@.@@@.@.@@@@..@@@@.@
@@@.@@@@.@.@@@.@..@.@.@@..@@@.@.@.@@@@@@.@..@.@@.@...@@.@.@@...@@@...@@@.@@@@@..@.@@@.@@@@@@@@..@@@@@@@@.@@@@.@@@@@..@@.@@..@@.@@@@..@.@@.@
@@@@.@@@.@..@@@@.@@....@....@@@@@@@@@@@@.@@@.@@@@@.@@.@..@@..@.@..@..@@..@@@@@..@@.@@@@@@@@@@@..@@@@@.@.@@@@@@@@@@@..@@@@..@@@.@@..@...@@@@
@.@@@@..@@@@@.@......@@@@@@.@@@..@@@@..@@.@@@.@@@@@@.@@..@@.@@@@@@@@@@@@..@.@@@...@@@..@@.@.@@@@.@.@@@@.@.@..@@@.@..@@.@.@@@@@@.@@@@.@.@..@
@@@@@.@..@@.@..@@@@@.@@..@@@@...@@.@.@.@.@..@..@@.@@@..@...@@..@@@.@.@@..@@.@@.@@.@@.@.@@.@@.@.@@.@.....@@.@@..@......@@@@@.@@.@@@@@@@.@.@@
@@@@..@@@@.@.@......@@.@.@.@@..@.@@@@@...@@..@@..@@@@@@.@@@.@@..@..@@.@@@.@@@@.@@@@@@.@.@@.....@.@@@.@@@......@@@...@@..@@@..@.@@@.@@@@.@@@
.@.@@@.@.@...@@@.@@.@@@@@@@...@@@@@...@@@.@@.@@@@..@@.@@..@@@..@@@.@@@@@@@@@..@...@@..@.@@@@@@@@@.@@@@..@.@@..@@.@@@.@.@@.@.@@@@@...@.@@.@@
@.@.@@..@@.@.@@@@..@@@@.@.@@@@@@@@@@@..@@.@@.@@..@@..@.@@@@@@@.@..@@@@@.@@@@@.@@@@@@@@@@@..@.@@@@@@.@@@.@@@@.@@@@@@.@@@.@..@...@@@.@@@.@@.@
@.@@@.@@...@.@@@@@..@@..@@@@@..@@@@@@..@...@@@@@@@@@@@@@@@.@..@.@@@@@@..@@@...@@.@@@@.@.@@.@.@..@@@....@.@@.@@@@@@..@.@.@..@@..@@@@@.@@@.@@
.@@@@@@@.@@@..@......@@@@@@@@@@..@.@@.@@.@@@.@@.@@@@@@@.@@@@@.@@.@..@@@@@@@@..@@.@.@..@.@@@.@@@@@@@.@.@@.@@@....@@.@...@.@@@.@@@...@@@@@...
@.@@@@@.@@@@...@@@@@.@.@@@@.@@..@.@@@.@.@..@@@..@@@..@@@.@@.@@@@@.@@@@@@@@@@.@.@@@@..@@@.@..@.@@.@..@@@.@@@.@@@@@@@@.@@@..@.@.@...@@...@@@@
@.@.@@.@..@..@@@@@.@@@@@@.@@@.@..@.@@.@.@@.@@.@.@@..@@@@@@@@@@.@@...@@.@@..@@@.@@@.@@@@...@@@@@@.@@.@@.@.@@@@@@.@.@@@@.@..@.@@@@@.@@.@@@.@@
@@@....@@.@@@@@@@@@.@@@@@@@@@@@@@@.@@@@@@@@..@.@..@@@....@.@@@.@@@.@.@.@@.@@.@@@...@@@@@@@.@@@@..@.@@@...@@@@..@..@@@.@@@..@@..@@@..@@.@@@@
..@.@..@@@@@@.@.@.@@.@@@@@@.@.@@..@@@@@@@@@@.@@@.@...@@@.....@@.@@.@.@.@@@@@@@.@..@.@@@@@@@.....@@..@@.@@@.@@@@...@.@.@@@.@@.@@@.@@.@@@..@@
@@@@.@....@@@@@@@@@@.@@...@@@@.@@.@@@@.@.@@@.@@@@..@@@.@@@.@..@.@@.@@@@.@.@@@@@.@..@@.@@@@@.@.@@..@....@@@@@@@@@@@@@@@..@@@@.@..@@@@@@@.@@.
.@@....@@@...@.@..@....@@.@@@@..@..@@@..@@@@.@@@..@@.@@@.@..@@@..@@@@@@@...@@@@...@.@@.@@@@.@.@@@@@.@...@@.@@@@@....@..@@@@@....@@@@@.@.@@@
@@.@@@.@@...@@.@.@..@@@..@@.@...@@@@..@@@.@..@....@@@..@@@.@@@@@@@@..@@@..@..@@.@@.@@@@....@@@..@..@@..@@@@.@.@.@@.@@@..@@.@..@@@@...@@@.@.
@.@.@@@@.@@@@@@@@..@@@@..@@..@@@.@@.@@@@@..@@@@@.@..@.@.@.@@@.@.@@.@.@.@@@.@@.@@@@@@@@..@@.@.@@@@@@@@@@.@@@@@@@.@@@@@.@@@@...@@@@@@@@..@@.@
@@@..@@@@.@.@@.@@..@..@.@@@@.@.@..@@..@.@.@@@@@@..@.....@..@@@@@@@@@.@@..@.@@.@.@@@@@.@@@@@@@@@......@@.@...@@@@@..@@@@@@@.@.@..@@.@@@@@@@@
@@..@@.@@@@@@@@.@@@@@.@@.@@..@@.@@.@@@@@@@@.@@.@.@@@...@@@@@@@@@.@@@.@@.@.@@.@@@@..@@@.@@@@@@@@...@@..@@@@@.@@@...@..@@..@@@..@.@@@@@@@.@..
@.@@..@@.@@..@...@.@@@@@.@.@..@.@@@@.@.@.@@@.@.@.@@@..@@@@@@@@@@.@...@@@...@@..@@@.@@@@..@@@.@@@@@@@@@@..@@.@.@@.@..@......@...@@@.@@@@.@.@
@@.@..@@.@.@@@.@....@@.@@@@@.@.@@@..@@@@.@@@.@....@.@@@..@@@@....@.@....@@.@.@@@@@@@@...@@@.@@@.@.@@@@..@@@@@@@@@..@@...@@@.@.@.@@@@.@.@@@@
@@@@.@@@@...@@@@.@@@.@@@@@@@@@..@@@@..@@@....@@.@.@@@..@@.@...@@...@@.@@@@.@.@@@@.@@@@.@.@@@@@@@.@.@@...@@@@.@@@.@@@@.@.@@@.@.@@..@@@.@...@
.@@.@@@@.@..@@@@@@@..@..@@@@@@.@..@...@@.@.@...@..@@@@@@.@@.@.@@@@@.@.@.@@..@.@@@@@@.@@..@@@.@@.@@@@@@.@@@@@@@@@@@@@@@@@@@@@.@@@@@.@...@@@.
@@..@..@..@@.@@@@@@@@@.@@@@@.@@@@.@@@@@@@..@..@@@.@@..@@.@...@@@@@..@@@@@.@..@@..@@@@@.@....@...@@@.@@@.@@@@@.@.@.@..@..@@@.@@@.@..@.@@@@@.
@@@..@@..@@@@@@@@.@@@..@@@@@@@@@@@@.@.@@.@.@@@@@..@.@@@@@.@@@@.@@@@@@@@@@@@..@@.@@@@..@@@.@@..@.@@@@.@@@@@@@@@@@@.@.@@.@..@.@.@@@..@.@.@@..
...@@@.@@@@...@@.@.@@@@.@@..@.@..@@@.@@@@@..@@@..@@@@..@.@.@@@@@.@.@@@@@@@@@@.@@@.@@@@@@@@@.@.@.@@@@.@@..@@......@@..@@@.@@.@@.@@@@@.@.@@@@
.@@@@...@....@@@...@@.@.@.@@@@@@@@@@.@.@..@@@@@@.@..@@@.@@@.@@.@@@@@@.@@...@.....@@@.@.@.@@@@@@..@@@@@@@@@.@@@.@...@..@@@@@.@@@...@@@.@@@.@
@@@@.@@@...@@@.@@@@.@@@@@@@@.@@@@@....@@@@@@@@@.@.@@@@@@.@..@@@.@.@@@..@@@@@..@@.@@@@...@@@@@@....@@@@@.@@@@@@@@.@.@@@@@@@.@.@@@.@@.@.@@..@
..@@..@@.@.@.@.....@.@@@@@@..@@@@.@@@@@.@@.@.@@@.@@@@@@@@.@@@@.@.@.@.@@@@@@@@@@...@@@@.@..@@@@@.@@.@@@.@@@@@@@@.@@@..@@@.@.....@.@..@@.@@.@
@.@@@.@@@@@@.@@@@@@@@.@.@@@@.@..@.@@...@..@.@@..@..@.@.@@@..@@.@.@.....@@....@@@..@@@.@@.@@@@@@..@.@@..@@@.@@@@@@@@.@@@@@@@@@@.@@..@@@@@@@.
.@@@@@.@.@.@...@@@.@.@@@@@.@@@.@@@..@.@...@@@@@@@.@@@@@@@@@.@@....@@@@@.@@@@..@@@@@@.@.@.@..@.@.@.@@.@@.@@@@.@@.@.@@.@.@@.@.@..@..@@.@@....
.@@@@@@....@.@@@@@@@@@@@@@@@..@@@@@.@.@.@.@@@@....@.@.@@.@@@@@@.@.@@@@@@@@..@..@@@..@@@.@@....@@@..@@@@...@@.@@@@@@.@.@@@@..@@@@@@.@...@.@@
@@@@@@@@.@@@@@.@..@@...@@@..@@.@@..@..@@@@.@.@..@@@@@@.@.@@.@@.@@@@@.@@..@..@@@@@.@@@.@@..@@@@@@..@@@.@.@@@@@@..@..@@@..@.@@.@@@.@.@@..@..@
@@.@@@@@.@@@@@@@@@@.@@.@..@@..@@@@...@@.@..@@....@@.@@.@.@@@..@.@@@@@@@@@@@@@@..@@@@@@@.@@.@@@@@..@.@@@@@@..@@@...@@@@@.@@@.@@.@.@...@@@@..
....@@@.@.@@@@@@@@@.@.@@.@...@@@@@@.@.@..@@.@...@@@@.@@@@.@@@.@.@@..@@@@@@.@@@@..@@@@@@@@@@.@.@.@@..@.@.@@.@@@.@@@@@@@..@@.@@@@@.@.@@@.@...
@@@@@@..@.@@@@@@@@@@@@@@..@@...@@@@@@@@@@@.@.@@@.@@@@@..@.@@..@..@@@@@.@@@@@.@@..@.@@@....@@@@.@@@@@@@..@.@@@@@@@@@@@@@@@.@@.@.@.@@@@.@@@@.
@...@@..@.@@@@.@@@..@.@@.@@.@@@.@@.@..@@@..@.@@@@@@.@@@..@@@.@@@@.@@.@.@@....@.@...@@@@@@@.@@@.@@@@.@@.@@.@@.@@@@.@....@@@@@@@@@..@.@@@@.@.
@@@..@@.@.@...@...@.@..@.@@@@.@@@.@.@@@...@@@@@@@...@.....@@@.@@@@@@@@@@@..@.@...@@.@@@@.@@.@@.@..@@@@.@@@@.@@@@@.@..@@@..@@@.@@...@@..@@@@
.@@@@@@@.@@@@.@@@@@.@@@.@@@@..@@@@@@@@@@@..@.@@@@..@@@@@@@@@..@@@.@@..@@@.@.@@@.@@@..@.@@@@@@@.@@@@@..@.@.@@@@@.@..@.@.@.@@....@@@@@@.@.@@@
@@@@.@@.@@.@@@.@@@.@@@@@@.@@@.@@@@@@.@@.@@..@@@@@@...@.@@@.@..@@@@...@..@.@@@@@.@.@.@@@@@@@@@@..@@@.@.@@@.@@@@....@.@@..@@.@@@@@@@@@..@@@.@
@.@.@@@@@.@@.@@@.@.@@@..@@.@@.@@@@@@@@..@@@@..@@...@.@.@@@....@.@..@@@@@@@@@@.@@....@.@@..@@@@@...@@@@@.@.@@@@..@@@.@..@@.@@.@.@@...@@@@@@@
@@.@@@@.@@@...@@@..@.@.@@@.@@@@@.@@@.@.@.@.@@...@@.@.@@@@.@..@@..@@.@@.@.@.@..@..@@@@.@.@@@@@.@.@..@@@@@@@.@@.@@@....@.@..@@..@@...@@@.@.@@
@@.@@.@@@@@@.@@.@..@..@...@@@.@@..@.@@@..@@.@.@.@@.@@@..@@@.@@..@@@@@@@..@.@@.@.@@@@.@.@.@@.@@@.@@@.@@.@@@@.@@@@@...@@@@@@@@@.@@@@@.@@..@..
@.@@@.@@@@@@@.@.@.@@@@@.@@@@@.@@@@@@@.@@.@.@.@@@@@@@@@@@...@..@@.@@.@@@@.@@@.@@@@...@@@@@@.@@@@@@@.@@@.@@@@@....@..@@@.@@..@.@@..@..@@.@@@@
@.@@@@@..@@@..@@@@...@@@.@@@...@@.@@..@..@@..@@.@@@..@@@@@@.@@@.@@...@.@.@..@.@@@@.@@..@.@@@@.@@.@@@@@.@@@@.@.@@.@.@@@@.@@.@.@..@...@@@@.@.
@@@..@.@.@......@..@...@...@.@@@@@@@@.@@.@@@.@@@.@..@.@@.@.@@.@.@@@.@.@@..@.@.@.@.@.@.@.@@@@@@@@.@.@@@@@@@@@@@@@@.@@@@@@@@..@@..@..@@@@@@.@
@@@@.@..@.@.....@@.@@.@@.@@..@@@@...@.@@@@@@.@@..@@@.@....@.@@.@....@....@@@.@@@@@@@..@@.@@..@.@@@.@@@@@.@.@@@@@.@.@@@@...@.@@@@@@@@@@@.@@@
.@.@..@.@@.@@@@@.@@@..@@@.@.@@@..@@@@@@@.@@@.@@.@@@..@@@@@.@.@.@@.@.@@@@.@..@@@.@@@...@@@@.@@@..@@.@....@.@@@@@..@@....@..@@@.@.@@.@.@.@@.@
..@.@@@@@@.@@@.@@@.@@@@@@@@@@@@@@@...@@.....@@@@@@@.@..@@@@@@@@....@@@@..@@.@@@@@.@@.@.@@@@@.@.@@@@.@@@@@@...@@@.@.@.@.@@@@.@@@.@..@.@@...@
@.@.@.@@.@@@@.@@@@@.@.@...@@@@..@@@@@...@..@@@@@@..@@.@@.@@@@...@@@@.@@@...@@.@@..@@.@.@@@@@@@@...@@@@@..@@.@.@@@.@@@..@@...@@@@@@@@@@.@@.@
@@..@@.@.@@@@@@@.@@@@..@.@@.......@@..@@@@@.@@@@..@@@@..@.@.@.@@.@@@.@@@@@.@@@.@@@@@@@.@@@@@@@@.@@@@.@@.@.@@...@..@@@@.@.@@@@.@@..@@@..@@@@
@@.....@.@.@@@@@.@@..@@@.@@@@.@..@@@@@...@@@.@.@@@.@.@@@@@@.@.@..@.@.@@.@.@@@@@@@@.@.@@@.@..@@.@.@..@.@@@@..@@@@@@@@..@@@@@...@@@@@.@@.@@@.
@@@@@@@@....@@@.@.@@.@@.@..@@@@@@......@@@.@.@.@..@@..@@@@@@@@@..@..@.@@.@@@@.@@@.@@..@@@@@@....@@.@....@@@@.@@@@.@@@@..@@@@@@@@@@@@@@@@..@
@@..@@@..@.@@@.@..@@@@.@.@..@@.@..@..@@.@@@@@...@@..@.@@@@@@@...@@.@@@.@@@@@@@.@@@.@@..@.@@..@.@.@...@.....@@@@@.@.@@.@.@@@.@..@@@@@@..@@@@
.@.@@@@.@....@@.@@......@@@@@@@..@@@@@@@.@.@...@@@@@@@@@@@.@..@@..@@..@@@@@.@@@..@@.@@@@@.@@.@@@.@@....@..@@@@@@@@..@.@@@..@@@@..@.@.....@@
.@.@..@@.@.@@@@@@.@@@@@...@@...@@.@@.@@@@@@@@@@...@.@.@.@@...@.@@..@.@@@@@@@@.@@@@@@@...@@...@@@@@@@@@@@@@...@@.@@@...@@@.@@@@@@@.@@.@@..@@
..@@.@@.@...@@@....@@....@@.@@@.@@..@..@@..@@@@.@.@@@@@.@@@@...@@@@@@@@@@.@.@...@.@@@@@.@@@@.@@@@@.@@@@@@.@@.@@@.@@@.@@@@@@..@@@@@@@@.@@@@.
@@@.@@@@@@@@..@..@@@.@@@.@@@.@@.@@..@..@.@..@....@@@@@..@@@..@.@@@@@@.@@.@@.@@@@...@.@@@@@.@.@@@@.@@@@@@@@@@.@@.@@@@@@@@.@@@@@@@@@.@@@..@.@
@@@.@.@@.@@....@@@@@..@.@@@...@.@....@@@@@.@.@@@@@@@@@...@@...@.@@@@@..@..@@@.@@@.@@...@.@.@@@....@.@..@@...@...@@.@@@@..@.@@@@@@@.@..@@@..
.@@@.@......@.@..@.@@....@.@@@.@@.@....@@..@.@@@.@@@@...@@.@@@@@.@@@..@@@@@@..@@.@.@@@.@...@@@@@.@..@@@@@@..@@..@.@@@.@..@@.@@.@@.@@.@.@@@@
@@.@@@@@@..@@.@.@@@@@.@@@@@@@.@.@..@@@@@.@@@...@.@@@@@@@@..@@@.@@@@@@.@..@@@@@..@....@...@@@.@@.@.@@@@@@@@.@@@@@.@..@@.@@@@.@@@@.@@..@.@..@
@.@..@@.@@@@.@.@@@@.@@@@@@@@.@@@@@.@@@@@@@@@@@.@@@@@@@.@@@@@@...@.@@@@.@@@@@...@@@@.@@..@@@@.@@.@..@..@@@.@.@@@@.@.......@@.@.@..@.@.@@@.@.
....@.@@@@@@@@@@.@@@.@..@@@.@@@@@.@@@@@..@@@@..@@@.@.@.@..@@.@@.@.@@@@@@.@.....@.@@@..@@@@@@@@..@@@@.@.@@@@@@..@@..@@@.@@.@@.@@@@.@.@@@@@@.
@@...@@.@.@@.@@@@@@@.@@@.@.@@..@.@@@@@.@.@...@@..@@@.@..@@@.@@@@@@@@@.@@@.@@@@@.@.@@@@@@.@.@@.@@@.@.@@@@..@@..@.@@@..@@@.@.@@@..@.@.@@@.@@@
@..@@@.@@@@@.@@.@@@@@@@@@@@.@@@..@@@@@@@@@.@@.@.@@@@..@@..@@.@.@@@@.@.@@@.@@@.@@.@@@...@@@@@...@...@@@@@..@@...@@@.@@@@@@@@..@@.@@.@@@@@@@@
.@.@.@@@..@@@.@@@.@@@@@@@@..@@@@@..@@@@@.@@@@@..@..@.@.@.@@@@@@@@@@@@@.@..@@@@@@@@@@.@.@.@@@@.@.@@@@@@@.@@@@@...@@...@@@@@@@@.@@.@@@@@@@@@@
@@@@.@@@@.@@@@@.@..@@.@@@@@...@@...@.@..@..@.@.@.@@..@..@@@@.@@@@@.@..@@@@@@@@@@@.@@.@@@.@@@@.@@...@@@@@@@@..@@.@.@@.@@@.@..@@@@@@@@@@....@
..@.@.@.@@....@@@@.@@@@@@@@.@@@@@.@@@@.@..@@@.@.@.@@.@@@@...@@@@..@.@...@@@@@@@@..@@@@@...@@...@.@..@@@@@.@@@@.@..@@.@@@@@@...@@.@@@.....@@
@@@@@@.@@.@@@..@.@@@@@....@.@@@@@.@..@.@@@@@@..@@.@...@@..@@@@@@.@.@@.@.@.@@...@...@@@..@@@@@@.@.@@@@@..@@@.@.@@@@@@@..@@.@@@@.@.@.@.@.@..@
@@@@@..@@.@@@..@@@....@@..@@@.@@...@.@@.@@@@..@@@@@@..@@@@@@@..@..@.@@.@.@..@@@@@@@...@.@@@.@@@@@@@@@@@@.@...@@.@.....@@@@.@.@@@@@@.@@@@@.@
.@.@@@..@.@.@@.@.@..@@@@@@.@.@@@@@.@@@.@@@@@@@@.@.@.@.@@@@..@..@@@@@@.@...@.@@@@....@.@@@@@@.@..@@@.@@.@..@.@.@.@..@@@.@@@.@..@...@@@.@@@@@
@@.@@@@@@@...@@.@.@@@.@@@@.@.@...@.@@@...@.@@@.@.@@..@@@@@.@@@@@@@@.@.@@..@.@...@@@@@...@@.@.@.@@@@...@@.@.@.@.@@@@@.@..@@..@.@..@@@..@..@@
@@@@@@@@..@.@@@.@.@...@...@@..@@.@@@...@....@@@.@@@.@.@.@..@.@@@@.@@.@@@.@.@@.@@@@@@...@.@.@@@.@.@@@@@.@@@@@..@@@@..@..@@@@@..@...@@@@@@.@@
.@@..@.@..@.@@.@@@@.@@@@.@@@@@.@.@@@@@.@@@...@.@@@.@@@....@..@@.@.@@@...@@@.@@...@.@@...@@..@..@@@.@@.@@@@@@@@..@.@@@@.@@@@@@..@@@.@@.@@@.@
@@@.@@@@@..@.@@@.@@@....@.@...@.@..@@@.@@.@@@@@@.@.@..@@@@.@@.@.....@..@@.@.@@@@..@@@@@@@@..@@.@@.@.@@@@@.@..@@@@.@@.@@@@.@.@@@@@.@@.....@@
@@@.@@@.@@@.@@@@@.@@..@@@@@.@.@@@@@@@.@.@.@@@@@@@@@@@@@.@@.@..@.@@.@@@@.@@@@.@@@@@@@..@@....@@.@.@@@@....@....@@.@@...@.@@@@.@.@@@@.@@@@@@@
@@@.....@@@@.@@@..@.@@.@.@@@@...@@@@@@@.@@@@@@@.@@.@@..@@@@@@@...@@@..@@@@..@..@@@.@@@.@.@@@@@.@@.@@.@..@....@.@@@.@@@@@.@@.@@...@@@.@.@..@
@@.@@.@@@....@.@@.@@.@@@@@@@@@@@@@..@..@..@@.@.@.@..@@.@@@@.@@.@@.@..@.@......@@.@..@@@.@@@.@@@.@@@@....@.@@@@.@@@@@@@..@@.@@@..@.@@..@...@
@@.@@.@@@@@..@..@...@@@.@.@.@@.@...@.@.@@@@@@@.@@.@..@.@...@..@@@@@.@@@@@@.@@.@.@@@.@@.@@@@@.@@@@.@.@.@@@@@@@@@.@.@@@@.@@@.@.@@.@@@.@.@@@@@
.@@@@.@@...@@@.@@.@@@@@.@@..@@.@.@@..@.@.@@@.@.@@@.@@.@.@.@..@@@.@.@@@@@@@..@@.@@.@@.....@@..@.@.@@@..@.@@@.@.@...@@@@@@@.@.@@@@.@@@@.@.@..
.@..@@@@.@@.@.@@@..@@@.@@@@@@@@@@@.@@..@@..@@@@@.@.@.@.@..@.@.@.@@@@@@@@@@@@.@@@..@.@...@.@@@.@..@@@@@@.@@@.@@@...@@@.@@@..@.@@.@@.@.@@.@@.
@@@@@@@.@.@.@@@@@.@..@@@@@@@...@@@@@@@.@@.@@@@@..@@@.@@@.@.@@.@@..@@@@@@@@@@@.@..@@@@..@@@@@.@@@@@@...@@@.@@.@.@.@@@@....@@.@@...@@.@.@@@@@
@@@.@@@@@@....@@..@@.@@@@@..@@@.@..@@.@@@@.@@.@@@@@@@@.@.@@.@@@.@@@@@...@@@@@@.@.@.@@.@@@@@.@..@@..@@.@@@@.@@@@@.@@@@@@@..@.@@....@@.@@.@@@
@@@@@@@.@@@.@@@@@@@..@@..@.@@@@.@@...@@..@@@@@.@@..@@@.@.@@@..@.@@@@@@.@@@@@.@.@.@@@..@@.@@.@@@...@@...@@.@@@@@..@@@.@..@@....@@@..@@@@.@..
.@@..@.@.@@..@..@@@.@@...@@...@@.@.@@@@@@.@.@@.@@@@@@@@.@@.@@@@..@..@.@..@@@..@@@@....@.@.@@@@@..@.@@@@@@@@@.@@.@.@@.@@.@@@.@@@.@@@@.@@@@@@
@@@......@@@.....@@@..@.@@@...@.@@@@@@@.@.@@@@@.@.@@@@@..@.@@@.@@.@@@@@@@@@.@.@@@.@@@.@.@@@@..@@@@..@@@@.@.@..@...@@...@..@@@.@....@@.@@.@.
@@@.@@@@@@@@@@@....@..@@@.@...@@@@@@@.@@@@.@.@@..@@...@@@@@.@@@@@...@..@.@.@@@..@@@@@.@.@.@.@@@.@@@..@.@@@@@@.@@@@@@.@@@@@@@@@@.@@.@..@@@@.
.@@@.@.@.@.@@@@@....@.@@..@@@@..@.@@@@@@.@.@@@@@.@@@..@@@.@.@@@.@@..@@..@.@.@@@@.@@@@.@.@..@..@.@@@.@.@@@@@.@.@@@.@@..@@@@@@@.@@@@..@@@@..@
@@.@@@..@.@.@.@@@@.@@@@@.@@...@.@@@@@@..@@@@.@.@@@@.@@@@@@@@@.@.@@...@.@@@..@.@.@@@@@@@.@.@@.@@@.@@.@@...@...@.@@@..@.@.@..@.@@@@@@@@.@@@@.
@@@@@@@@.@..@@@@@@@.@.@@@@@@..@.@@@@@@@..@..@@@@@@@@@@@@@@@@@@.@@@@@@@.@@@@@@@@@@.@@@@@@@.@.@@@.@.@@@@@..@.@@@@@...@@.@@@@..@@@@..@@@.@@@@.
.@@@@@.@@@@@.@.@@@@@@@..@@@@@@@@@.@@@@.@@.@...@@.@@@@@@.@@@@.@@@@@@.@@@@@@...@@@..@@@@..@.@.@.@@@@@@@@@@.@.@@@@@@@@@..@@.@@@@.@...@@@@@.@.@
@@@@.@@@.@@@@@@...@@..@.@...@@@.@@.@.@.@....@@@...@@....@@....@.@@@@@@@...@...@@@@@@@@@@@@@@@@@...@@@@@@@@@.@.@@@.@@@@@@@@@@@@@@.@@@@@@@.@.
@@@@@@.@@@.@@@..@@@.@.@.@@.@@.@..@@@.@@..@@.@@@@.@.@.@@@@@.@.@@........@@.@@.@@.@@..@.@@.@.@..@@@.@@....@@@@.@.@@@..@..@.@@..@@@.@@@.@.@@@.
..@@.@@@@@@.@@@..@@@.@.@@@@.@.@@.@@@.@.@@@@.@.@.@.@@.@..@@@@@......@.@@@@.@@@.@@.@@@@@@.@@@@.@@...@@.@.@@.@@.@.@@.@@.@@.@@.@@@@@@@.@@@@@.@@
@..@...@.@@@@@@@@...@@@@@@..@@....@..@@@@.@.@.@@@@@@@..@..@@@@.@@.....@..@.@..@@.@..@@@..@.@@@@@.@@@..@@@@@@@@.@@@@@@.....@@.@@.@@.@@..@..@
@@@@.@.@@@..@.@@@..@@@@@@@@.@@....@..@@..@@.@.@.@@.@@.@@@@.@.@.@@..@@.@..@..@@@..@@...@.@@@@@@@.@@.@@@@.@@@@.@@@..@..@.@@.@@@@@.@@.@@@...@@
.@@@.@@.@.@..@.@@..@....@@@@@@.@@.@@.@.@@.@.@@@..@@.@..@.@..@@@@@..@@..@@@.@..@@@...@.@@@@@..@.@..@@...@@.@@..@.@@@@@...@@.@.@.@@.@@@@@@@@@
@.@@@@@.@@..@@.@.@@@@@@@.@@.@@@@@@@@@@...@@@@.@..@.@@@..@.@@@@@@@.@@.@@...@.@@@@..@@@@.@@.@@.@@@@@.@.@.@.....@@.@@..@@@@@@@@..@.@.@@@@.@@@.
@@.@@@@.@@@.@@@.@@.@@@@@@@..@@..@.@..@...@@@.@@@@@@@@@@@@.@@.@@.@@..@@@.@@@.@...@@.@@@@@@@@.@.@@@...@@..@.@.@@@@@@.@@@...@@@..@.@..@.@@.@@@
.@@.@@@@@@@@@...@@.@@@@@@@@..@...@.@@@.@@.@@@@@@@@@.@@@@@@@@@@@@.@@@@@.@..@.@.@@@...@@.@.@@....@@..@@@@@@.@@@.@@@.@@@..@@@@@@.@@.@.@@..@.@@
@.@..@@..@@@.@..@@@.@@.@..@@..@...@@.@.@@@.@@@....@.@@@@@@.@.@.@.@.@@@.@@.@@@@@@..@.@@@@@.@@@@@.@.@@@.@@@@@..@.@.@.@@@@@.@@@@@@@@@@@.@@..@@
.@@@..@@@@@@@@@@@@@.@..@@.@.@@@@@@@@@.@.@@.@@@@@@@@@@.@@@@..@@@.@@@@@.@@@@@..@.@@...@@@@@@@....@@.@@@@@.@@@@.@@@@..@@@@@@@.@.....@.@@@.@@..
@@@@@@@@@.@@@@..@@@@.....@.@@@@@.@.@@@@@@.@@@.@..@@@...@@@@@@@@@@@.@@@...@@@@.@@@@@@.@@..@@.@...@@@@@@@..@@@@@.@.@@@@@@@@@.@..@@@.@@@@@@@..
@@@...@@.@@...@@@.@@.@@@@@@.@@@.@@....@.@.@@@..@.@@@.@.@@..@@@.@@.@@@@.@@@.@.@.@@@..@@@..@@@@@@@@@..@@@.@.@..@.@@.@@@...@.@@@@@.@@..@@@@@.@
@@.@@...@@@.@@@.@@.@.@@@@@.@@@@@.@..@@@@.@@.@@@@@.@@.@@@@@@@.@.@@@..@@@@@@...@@@@@.@.@@@.@....@@@@@@@@@@@@@.@@.@..@@@@@@@@@@@@.@@@.@.@.@@.@
@.@.@@@.@.@.@@@@@@@@@@.@@.@@@@....@..@@..@@@.@.@.@.@.@.@@@@..@@.@@@@@..@@@.@@@.@@@@@@@@@@.@@@@@@@@...@@@@@@@@@.@@@.@@.@@.@...@@@.@@@@.@...@
..@@@@@@...@.@@@@@@@@...@...@@@.@@.@..@.@.@@@.@.@@..@@@.@.@.@.@@@@@@@@@@@.@@@@@@@.@.@@@@.@..@@@.@..@.@@..@...@@..@@@..@@..@.@@@@.@.@@..@@@@
@@.@@@@@@@.@@.@..@@@@..@@@@@@@@@@@@@...@@@...@@.@@@@@@@@@@@@@.@@@.@..@..@.@@@@@@.@@@@@.@.@@@@@@@.@.@@@@.@.@..@@@@.@@.@@.@@@@.@.@.@@@@@..@.@
@@@@@@.@.@...@.@@@@@@...@@@@@@@@.@@@@@@..@@@..@@@@@.@@@@@.@@@.@@.@@@@@.@@.@@@@@@@@@@..@..@@@@@@.@@@@.@...@@.@@@.@@.@...@@@@@@.@@@.@.@..@.@@
.@@@@@...@.@...@@.@.@..@.@...@@@.@@@@@@@..@@@@@@..@.@@@@@@@@@..@@@@@@@@@@@..@@@@@@@@.@.@@@@..@@@@@@@...@..@@.@.@.@.@..@.@@@@@@@@..@@@@@@..@
@@@@@@....@..@@.@@..@@@@.@@@@@@@.@@.@@..@@@@@@@.@.@@.@@.....@.@@@@@@..@.@@..@..@..@@@@@.@@.@@@@@@.@@@.@@@.@.@@@.@@@.@@.@@@@.@...@@@@@..@.@.
@@@..@.@.@@@.@@@@@@.@.@@@@@@..@@.@@.@@@@....@@@.@@@.@.@.@@@@@..@@@.@@@@..@@.@.....@@..@.@@@.@.@@@.@@@@@@.@@..@@.@..@@.@@@@@@@.@@@...@@@@@@@
...@@@@@@@@.....@.@@.@..@@..@@.@.@.@.@@..@@@@@@@@@...@@@@@@..@@..@@@.@@@@@@@....@.@@.@@@@@@.@@@@@.@@@@@@@@@@@@@.@.@@@@@@..@.@@@@@@..@@@@@@.
@@@@.@@@@@.@@@..@@.@@@@@.@@@.@@@...@@@.@.@.@@.@@@@.@.@@@@.@@@@..@.@@.@...@@@@@@@@@.@@@@...@.@.@@@.@@@..@@.@..@.@.@@..@@.....@@@@.@.@@.@@.@@
..@@......@@.@@@.@@..@@@@@..@@..@@.@@@@@@@@@@.@.@@@.@@@@....@@@@..@..@@..@@@...@@.@.@@@@...@@@@@@@...@@@@.@.@.@@@...@@@.@@@@@.@@@.@@....@.@
@.@@.@@..@@@@@@.@.@.@.@@@@@@..@..@@.@@.@@..@.@.@.@..@..@.@@@@..@@@@.@@@@@.@@.@.@@@.@@.@@.@..@@...@@.@.@@@.@@@@.@@@@.@@@@..@.@...@@@@@@@@@@.
.@@..@@.@@@.@..@@@@....@@@..@..@@@.@@@@@@@@@.@@@.@@@@@@..@@@@@@@@@..@@@..@.@@.@@@@....@@@@@..@@.@@@..@@@.@@@@.@.@.@@@@@@@..@..@@@@...@@@@@@
@.@@@@.@@@@@.@.@.@@.@@@.@@.@.@.@@..@.@..@@@@@.@@..@@.@@@@@@.@..@@@...@.@..@..@@@@...@@@@.@@@@@@@..@..@@@.@@.@@@@.@..@@..@@@@@..@.@@@@@@.@.@
@@@@@@@.@@@@..@@@@@@@@.@@@@@@@@@@@@@@@@.@.@..@@...@@.@@.@@@.@@@@..@.@@@@.@.@.@@@@@....@.@@@..@@@@..@@@@.@@@@@@@@...@@..@.@.@@@@@@@@@@...@.@
@@@@@.@.@@@..@@@@..@..@@...@@@.@@.@@@.@@.@@@.@.@@@@@..@..@.@...@@@@@.@@@@@@@@@.@.@@@@@@.@@.....@@@..@@@.@@@@@.@.@@@.@..@.@.@.@@@@.@@@..@@@@
.@@@@@@@.@@.@@@@@@.@@...@@@@.@@@@.@@.@@@@.@.@....@.@.@@@@@@.@..@.@@@@@@@@@...@@.@.@......@.@@..@...@@@@@@.@.@@@@..@@@.@.@@@....@@@.@.@@@@@.
..@@@@@@@@.@@.@@.@.@.@@@@..@..@@.@...@@@.@@@@@@.@..@..@@.......@@.@@@@@@@@@@@.@....@...@..@.@@@....@.@.@.@.@@@@@.@.@@@@@.@@@@@@@@...@@@@.@.
@.@@@.@.@@.@@..@@@...@@.@@.@...@@@...@@@@@..@.@@..@...@@@.@@@@@.@@@@@@@.@@@@.@@@.@@@.@.@@@..@@@@@.....@@@@@@@..@@@.@.@@.@.@..@...@@@@@@@@.@
@@@..@.@@@.@.@@..@@@@...@@.@.@@@.@@@@...@@..@@@@@@.@..@...@@@@..@@..@@@@@......@.@@@@@@@.@@@@.@@@.@@@.@@@@@@@@@@@.@.@@@@...@.@@..@@@@@@@@@@
@@@@@@@@@@@.@@@@@@@@@@@@@@.@.@..@@.@@@@.@.@.@@@..@@@@@.@@@@.@@@...@@@.@..@@@..@.@@@@@.@@..@@.@@@@@...@@@@.@..@..@.@.@@@@@@@@.@@@.@.@@@@@..@
@.@.@@@@@.@.@@@.@@@...@.@.@.@.@@@.@.@@.@@@...@@@@@..@.@@@@.@@@@@.@.@.@@@..@.@.@@.@.@.@@@@..@.@.@@@@@@@.@@@..@@@.@@.@..@@@.@.@@@@@@@.@..@@.@
..@...@@@@@.@..@@@..@.@@@@@.@.@@.@.@@@@.@.@.....@@.@@@.@@@@@@@@..@@@..@.@..@.@@@@@@..@@.@@..@..@@@..@@@.@..@@...@@.@.@@@@@.@.@@@@.@.@@@@@.@
.@@@@@@..@@@@..@@@..@@@@@@.@@@@.@.@@@@..@@@@@.@@@@...@@.@@@...@@@@..@@.@..@@@@@..@...@@@@@..@@@.@@@@@@.@@@@@@@@..@@.@@@@.@.@..@@.@.@@@.@@.@
.@.@@.@@@@.@.@@@..@@.@.@@..@.@@@@...@@...@.@@@@@.@@.@.@@.@.@...@..@..@@..@...@....@.@@..@@@@.@.@.@.@@@@@@..@@.@@@@@@@.@@.@.@.@@.@@@..@..@.@
...@.@@@@..@@@@.@...@..@.@@@.@@@@.@@@@@@@.@@@@@@@@@@@@.@@@.@@.@@.@@@.@@..@..@.@@@@@.@@@@@@@@@.@@@@.@@@@@@@.@@@@@@..@@@@@@@.@..@@.@...@@@@@@

View File

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

1191
2025/inputs/05_1.txt Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,11 @@
3-5
10-14
16-20
12-18
1
5
8
11
17
32

5
2025/inputs/06_1.txt Normal file
View File

@@ -0,0 +1,5 @@
49 9493 847 816 6 7131 86 51 323 87 9 71 1789 356 163 7 94 88 3751 314 916 1 42 57 1 234 6 734 762 92 74 18 1 17 417 16 53 733 691 735 141 2584 32 42 42 86 53 6657 812 64 261 583 39 44 325 36 413 77 6792 99 478 68 88 654 134 9 834 7516 2457 9 86 793 974 871 4 646 345 45 465 988 74 1 58 73 2 83 617 5144 66 71 37 85 53 44 2474 314 3 558 3 5636 32 93 86 68 3 3 79 8 1 49 3 22 171 76 56 45 12 9 858 27 494 816 98 71 289 98 244 9326 75 6 4 6 64 66 492 385 4 6219 6 19 6 25 4169 383 58 46 65 276 33 5839 569 79 74 6526 98 85 996 587 46 133 17 92 86 3737 473 455 552 5 953 11 93 84 873 342 72 693 69 5318 96 24 9173 4414 73 5 82 927 2 84 28 9 67 7 63 42 971 735 2 731 48 529 741 71 99 65 784 135 84 77 83 349 428 41 635 78 44 5 319 4 262 9 548 788 294 94 5966 6 366 1925 19 76 83 237 462 3275 2 35 1331 4 75 34 69 64 455 781 26 5439 68 65 379 14 56 87 79 32 55 353 813 9974 283 64 6 64 1876 47 9 17 14 17 86 9 927 6 53 534 277 7426 8534 2 176 57 52 41 39 66 465 7 56 55 9444 93 751 51 9931 253 792 698 49 98 35 17 129 45 2145 5 29 7 31 515 237 62 36 39 7 473 212 41 73 254 94 7151 64 93 29 5 868 3 5 62 8 913 16 8 13 9 86 49 5 78 57 98 7 35 9 45 34 5 41 49 18 64 347 439 9 72 99 83 922 37 945 6938 26 35 563 37 8 7243 819 2 181 77 51 7598 82 3 986 93 496 91 77 92 6757 32 21 868 6 21 9 15 2244 396 44 827 383 91 92 949 89 12 6 8765 624 4125 6995 85 5 59 76 211 29 25 96 85 8683 77 8 72 33 2789 368 265 8943 5394 7 8 136 19 9929 75 61 491 43 781 914 36 1284 32 3 18 235 589 386 4273 91 7 55 643 8 26 72 9 1 5 94 66 5 5 283 4 61 47 347 8 96 938 2926 2 47 8 64 648 215 28 5464 6 8 8 666 9 541 9315 47 5 45 782 61 141 124 571 99 33 26 8 625 5 8 57 5 844 14 93 5853 11 87 897 9367 82 17 143 5 84 2 24 93 929 21 18 3 379 78 2 464 3 871 815 46 297 91 9 1164 14 95 424 2 19 874 9695 11 715 512 281 58 598 3615 9 94 993 66 16 2 2 17 331 63 916 172 24 3 4423 78 8 48 252 835 21 4876 74 369 4 961 94 35 198 58 6 91 9498 13 4 748 89 448 192 548 589 85 38 8 45 85 612 65 21 55 626 45 251 347 2573 74 21 43 8 361 966 1391 81 18 29 61 1 2 46 59 898 3121 972 6257 484 15 926 37 7 697 7143 1 38 81 351 98 45 462 3193 822 49 82 6 331 52 84 674 51 1376 4 15 76 7 845 69 461 994 2568 643 7 916 691 3162 8 57 85 59 22 8 86 715 28 4 86 41 43 666 9 731 713 9452 27 98 858 434 3268 42 7 847 84 8 79 59 825 56 59 88 32 526 29 5 6749 9 945 82 9 95 7 61 66 2988 67 14 53 73 736 841 538 768 816 538 66 8 11 24 876 4 76 87 57 244 51 6 43 776 9 5 67 69 9 235 23 924 952 42 3273 1341 5 53 1599 46 53 64 86 73 459 146 363 466 4 9 777 1 17 958 885 123 93 8 84 64 46 8378 272 917 99 1 2355 1 978 11 16 9223 3 93 656 3234 26 89 3 1711 281 795 832 62 44 81 413 49 59 8 81 98 286 63 7 47 32 333 1 29 1543 81 465 18 582 7 2 33 398 7 632 6 75 8634 97 54 287 27 41 5 829 19 37 34 18 47 74 37 79 95 4 34 682 5357 48 818 166 41 1 122 58 982 2 75 25 776 446 1 97 91 57 294 79 49 49 14 35 28 58 57 1 15 96 268 5 8 16 97 24 62 84 6382 565 62 7 31 56 95 45 51 19 77 8 55 239 9 2 2 37 51 91 12 68 78 9437 78 3 33 22 3 9 92 2751 7462 6 5298 85 7495 796 8 76 36 921 2 45 195 44 288 42 784 17 24 8 894 619 2276 4 8849 572 19 33 4 165 27 67 519 3365 8 18 35 7 9342 4 74 25 15 6878 5 8 46 26 114 87 83 73 2 45 99 593 6 68 788 3464 815 5325 5 7279 98 47 24 97 92 7339 6 72 44 924 6 1 22 871 69 9 45 923 868 499 9 4 34 92 8 233 479 24 52
83 9643 262 113 91 3284 778 71 966 43 91 33 7759 156 265 25 54 79 4869 691 537 57 9341 35 25 242 2 269 956 118 27 23 1 82 698 15 15 652 1446 367 776 6562 54 19 98 89 25 8683 767 29 553 626 65 39 436 53 615 81 2956 44 546 547 55 4511 555 687 915 6713 6749 27 431 245 24 935 99 783 629 17 626 674 11 38 999 44 22 81 196 7938 51 55 54 46 84 83 7591 553 9 199 4 5294 75 68 93 15 61 28 582 78 95 81 5 46 91 67 71 87 96 67 383 88 731 471 33 59 766 38 927 5321 26 2 2 2 75 57 825 529 887 8711 66 73 8 85 1268 534 24 97 44 954 39 571 541 26 49 845 85 34 869 479 69 717 26 78 31 665 668 558 94 95 317 11 39 13 249 675 74 278 65 12 85 41 321 4787 91 2 34 611 42 71 24 892 38 5 36 69 579 872 19 288 88 874 113 79 87 78 831 568 27 21 58 621 435 39 534 55 16 91 112 5 984 346 182 642 877 155 7673 18 523 494 61 23 96 925 437 8675 655 7658 8946 57 77 934 21 26 882 331 98 3858 691 91 587 621 3591 445 69 45 77 871 882 6713 942 43 56 88 5784 21 82 5183 95 12 72 869 162 22 55 698 72 261 7696 38 155 1 74 34 88 53 63 5 99 937 1834 616 943 372 326 885 344 951 136 41 93 16 774 74 893 8 25 46 166 667 358 61 328 292 16 719 599 23 63 958 22 1136 652 28 36 6 941 88 1 87 52 785 51 14 76 2 324 46 21 98 12 312 75 28 2 696 47 4 53 77 62 56 569 354 6 81 11 62 276 5 125 7492 36 63 232 33 22 6868 446 41 19 74 3464 6226 723 9 2989 32 2561 98 96 835 5984 53 67 636 74 466 74 18 3835 997 65 122 74 66 8554 583 93 599 98 9284 871 4862 4159 43 44 25 31 796 98 35 191 21 9238 41 37 27 23 6245 132 933 7352 3527 5 727 89 15 2218 534 99 953 54 192 755 84 9455 34 55 68 744 984 473 285 26 7 83 664 44 71 1353 72 85 82 98 26 74 3 223 57 58 232 288 9 99 72 773 928 65 3 98 432 1121 24 6275 57 779 44 818 65 99 9413 66 9 47 568 19 386 654 796 86 57 58 27 364 642 2 59 416 496 47 61 1419 76 64 284 5426 27 23 547 25 488 72 97 2183 221 59 14 7 788 76 45 854 283 58 252 33 446 884 85 7287 18 85 886 3 93 79 9117 73 692 794 977 67 739 6671 784 657 899 4 32 63 757 47 911 48 329 634 77 12 6878 5868 58 483 719 17 31 2296 68 84 54 673 41 385 883 33 6 54 82 994 63 876 569 481 753 896 985 11 76 29 84 93 991 234 94 88 915 59 8889 298 5969 49 837 89 72 739 235 568 227 91 89 36 82 45 23 93 296 6225 143 885 446 946 238 81 6 215 8857 1 76 12 21 58 77 19 4193 782 81 74 48 342 6 46 661 85 3698 5 71 33 44 93 264 132 258 7798 451 5 757 881 2545 1 97 94 497 427 35 24 667 723 57 33 19 26 319 24 651 39 5255 9689 56 5239 789 5533 78 41 573 82 46 176 46 746 862 56 82 51 143 44 15 8641 9 635 66 68 235 4 47 19 5863 98 37 29 92 6863 953 293 481 312 639 97 8 95 75 881 35 82 52 842 582 42 52 94 231 32 7 47 12 99 12 79 256 614 2 5231 4367 8 225 5843 79 18 98 47 38 786 322 452 139 6 8 521 6 22 637 364 196 21 5 523 84 635 7486 316 197 72 865 8186 89 344 92 98 7982 87 96 622 7772 74 48 55 226 177 433 823 8679 16 774 328 29 354 7 67 261 899 5478 88 665 96 236 431 2 8555 139 629 31 787 7 44 54 775 4474 739 78 96 455 83 68 343 99 7 58 388 65 18 9 52 76 12 77 691 41 5 42 278 1391 85 343 233 29 22 531 134 779 19 4 18 161 259 676 64 271 42 544 741 52 61 632 28 154 65 325 18 41 75 414 31 8 519 79 42 957 27 5192 917 77 94 86 61 53 97 81 78 42 36 55 82 89 34 7542 57 34 62 65 44 47 1455 14 79 2 82 22 1 97 1432 515 2 8486 46 5644 556 67 71 962 674 67 58 231 13 794 27 439 69 25 4 456 415 297 69 4251 83 25 88 3 973 959 16 943 1289 39 66 39 93 777 768 511 847 6 3859 1 23 85 411 326 56 43 78 95 31 215 881 69 76 468 1663 424 642 14 177 64 46 78 42 29 9132 3 81 2 629 19 4 95 676 87 8 46 679 18 767 17 74 52 666 9 851 516 26 36
16 959 5389 422 48 7167 663 8 722 14 26 85 8579 924 6241 48 31 94 1794 54 693 67 5158 5 14 428 5 56 924 251 31 99 4 13 925 769 7 693 4785 993 73 279 25 28 189 962 56 7533 748 48 299 752 44 89 272 32 41 56 5597 48 89 753 67 7348 28 664 927 918 1 7578 1553 316 89 973 762 24 61 31 361 198 77 92 525 4 48 41 729 8579 72 95 2974 83 9 622 8773 62 54 925 28 4544 128 62 74 5 976 79 785 932 36 41 8 54 3 64 6 57 46 58 868 49 91 457 7 22 122 21 429 782 4796 55 87 37 79 779 673 331 841 2286 39 32 95 18 5696 46 5781 68 39 865 59 26 975 29 11 85 94 81 381 71 63 722 37 295 36 969 62 321 27 48 33 55 94 1 335 695 21 8 98 38 34 28 21 9987 86 748 38 825 27 22 86 166 9 39 36 14 531 596 71 23 23 21 894 91 77 83 398 172 8 21 435 87 481 46 25 85 5545 57 489 43 535 582 883 447 95 548 2325 43 763 129 67 36 2 132 369 175 267 7141 69 166 1 9526 85 55 536 94 19 9144 377 7 838 788 1552 818 67 52 23 52 12 3535 43 78 725 84 7563 2 276 8861 17 777 198 2817 545 79 19 9965 37 9 3746 36 975 2 4 2 28 61 96 6 17 915 98 392 88 314 647 289 65 41 232 7 18 81 112 69 81 49 88 545 842 657 11 76 612 321 17 29 249 18 468 912 96 4656 971 63 29 92 646 24 8 236 98 875 72 44 9 55 683 6 353 54 85 891 235 7938 3 542 68 67 18 98 85 92 432 54 137 41 48 29 24 1 122 7866 41 47 35 7 54 163 96 83 35 117 2365 8961 791 53 6847 68 2271 6 45 4872 9232 49 27 273 81 927 44 6448 541 561 369 441 18 4 1164 393 6 871 344 56 427 7185 8111 1 16 91 36 546 73 93 179 69 3567 84 66 96 93 1218 637 613 9426 796 97 2132 99 42 9764 786 21 65 52 764 9274 23 882 65 614 664 454 35 83 337 25 47 25 245 667 21 6687 48 615 349 83 99 6873 32 155 84 3 1191 44 2 66 71 866 849 67 67 53 692 9933 17 4371 47 482 94 77 68 12 421 41 27 16 93 5 79 772 16 46 618 14 37 728 342 6145 83 438 278 34 44 293 58 72 95 15 96 314 97 87 1542 82 36 9554 863 41 36 14 447 279 962 958 356 3 636 2 48 7865 558 55 77 87 452 13 66 75 825 37 797 644 9359 65 942 8986 783 298 666 2 17 24 194 986 994 5 588 24 13 95 619 8933 27 957 65 85 64 8746 58 14 16 726 81 541 597 69 9 6 64 8475 831 267 5191 94 866 69 32 52 97 789 92 86 351 697 54 71 124 46 3485 298 964 42 949 84 38 161 19 484 185 47 23 97 84 355 1 34 5773 62 49 393 77 728 38 11 42 648 471 6 99 52 86 76 883 64 446 751 82 77 947 379 8 68 235 36 1913 88 28 28 69 67 851 9527 21 4313 34 23 952 153 14 21 52 71 574 2343 19 51 88 631 97 97 45 74 139 9686 564 1 768 8916 24 3665 382 4416 82 136 382 17 899 928 38 437 5262 96 48 47 335 791 693 2182 2 331 23 91 353 97 1 97 1328 65 96 55 8 4687 983 354 621 14 813 35 17 41 897 949 74 25 56 687 213 6179 67 94 269 92 7 56 118 77 54 49 787 98 4 242 8479 19 122 319 39 41 78 87 231 592 568 363 615 62 17 25 6 74 885 594 148 9 13 313 76 191 277 892 96 89 196 176 494 618 278 67 66 226 1 174 271 18 8 42 89 53 33 446 3623 91 4656 873 33 826 12 39 254 622 5238 441 891 2 814 845 4 6697 256 469 92 53 25 87 86 569 9549 312 792 2 515 356 87 666 285 8 64 927 7 32 6 39 12 497 52 367 72 84 53 228 692 84 18 838 48 73 268 125 69 869 3 3 916 564 439 5 959 23 281 283 37 555 144 51 499 93 431 271 34 73 426 123 37 4365 26 14 167 58 9727 856 34 91 54 62 97 692 11 42 32 169 66 44 29 43 9583 486 15 88 6 38 938 537 1 83 2 69 943 4 55 948 646 72 324 769 2444 166 45 976 757 998 96 77 3 76 18 33 731 86 38 51 58 133 473 98 466 86 91 46 87 575 548 278 583 532 195 279 55 82 159 355 354 459 4 866 14 562 35 456 633 87 19 94 85 95 2836 686 21 32 886 693 714 655 68 855 6 66 593 95 61 654 4 84 2 96 82 91 94 531 26 4 327 79 96 741 33 581 14 279 68 543 632 79 57
83 5 2222 2 47 518 117 3 9 96 87 28 1732 92 4877 81 71 65 4 8 528 66 5889 8 57 793 56 4 5 821 183 25 35 34 996 451 7 3 8336 326 37 13 6 27 719 863 7 817 86 56 77 92 86 7 65 41 2 67 711 1 76 635 6 6363 4 469 847 83 7 4168 4219 485 9 736 919 93 12 5 517 773 34 72 533 6 34 52 85 76 7 73 9559 4 7 694 35 78 28 9213 38 23 554 44 6 4 376 68 372 118 35 98 13 638 8 51 8 54 34 86 915 15 25 373 4 8 359 91 8583 14 4463 16 79 54 36 314 29 842 8229 1 233 64 12 56 9494 9 8724 24 1 698 8 76 836 83 4 97 46 1 758 2 1 148 6 652 7 915 15 2 74 17 7 5 78 5 4 31 29 6 11 8 54 21 75 35 11 773 9 164 94 14 59 947 1 96 9 89 258 863 87 9 47 11 275 57 63 14 379 52 8 96 273 1 9 882 8 35 9624 26 485 68 889 486 464 823 5 687 87 41 374 88 67 467 7 892 87 76 298 6368 3 399 7 2815 65 42 8 42 71 989 266 1 34 125 3961 788 576 593 12 3 74 2684 7 34 642 97 94 3 686 8742 23 922 532 9954 6 751 68 8887 77 4 995 31 41 5 7 9 3 92 58 71 2 255 5 564 3 523 57 765 3 9 763 4 5 77 976 59 33 68 73 741 921 746 41 53 726 522 61 85 24 39 159 78 24 9871 533 38 51 76 9 36 68 651 82 78 99 84 2 99 137 3 769 88 4 988 668 6663 96 552 61 77 83 69 52 93 625 7 549 3 11 66 63 8 175 9 72 6 1 8 18 5 5 79 47 649 8416 661 622 53 1225 72 6986 3 24 8259 8585 6 4 19 82 827 36 4449 94 811 262 818 13 9 9759 57 7 444 947 32 94 146 192 3 776 54 85 7 91 43 729 26 81 68 25 389 52 2 66 331 944 34 47 3695 6 5 756 591 95 1 91 294 5551 47 46 18 277 891 334 4 28 332 53 18 83 4 353 78 1259 59 897 118 745 2 5824 48 9654 38 2 7523 13 91 17 47 89 198 31 27 38 123 4573 29 9331 276 8546 12 2 91 79 48 1 64 73 74 4 4 78 83 2112 458 76 32 847 285 1154 13 522 96 21 85 46 5 726 4 45 89 141 18 82 6148 63 2 1367 967 31 84 55 493 127 472 669 626 7 17 5 75 9283 577 7 42 52 1 22 75 1 727 66 62 353 4621 34 337 713 431 251 95 1 78 66 511 555 169 2 467 78 19 31 53 1664 28 447 66 43 6 33 2 54 19 983 66 7969 96 8 33 7 93 8465 831 912 4218 2 854 48 32 53 746 358 27 22 9842 563 11 42 86 1 1358 424 8 4 858 73 44 45 91 25 836 28 99 7 93 284 5 5 3725 87 15 63 55 474 1 29 91 69 4 56 35 79 92 79 233 5 49 36 81 27 129 19 2 15 944 78 782 19 4 3 38 8 4192 3997 7 927 8 13 539 19 78 19 88 65 218 6271 32 2 54 777 51 14 37 14 25 6275 23 1 9 7836 24 6159 91 5729 3 474 88 4 419 646 22 4 9738 3 1 28 628 858 5226 36 38 46 25 97 7529 42 4 5994 7767 9 84 71 8 1679 71 893 31 55 158 27 18 7 689 57 45 45 6 259 14 3141 19 5 9 83 49 98 346 79 27 55 84 8 7 41 6332 91 338 726 38 8 5 42 821 249 6 415 363 52 46 14 76 4 1 99 7435 4 63 3487 23 859 45 3376 8 92 781 541 993 571 492 4 89 279 9 9 715 3 3 94 2 98 23 383 4173 71 6897 622 8 511 31 55 781 113 7761 965 664 5 22 538 4 274 285 635 31 67 53 32 78 59 4319 936 258 9 45 676 99 641 258 7 97 949 8 52 1 41 2 751 1 866 5 96 857 22 12 15 3 845 46 43 698 862 9 869 9 3 141 49 975 6 422 56 557 834 94 9728 644 85 955 9 755 297 72 8 729 871 52 1861 58 17 639 61 284 22 83 52 71 3 14 136 65 26 4 568 8 8 92 52 7419 183 47 2 8 52 736 15 2 88 6 88 493 12 61 31 41 97 8 651 86 4 88 658 367 262 59 64 5 4 2 84 999 52 89 48 19 83 324 38 3 1 47 9 98 8 275 9763 914 662 915 5395 51 93 36 298 284 625 1 943 562 521 22 845 411 6 13 9 58 63 4555 35 644 99 225 12 113 18 94 88 1 7 251 52 98 448 55 59 6 48 53 456 52 493 79 75 857 33 75 68 61 358 17 8381 34 782 91 37 43
* + + * * + * * * * * * + * + + * * + * + * + * * + * + * * * * * * + * * * + + * + * + + * + + * * * * * * * * * * + + * + * + + * * + + + + * * + * + + + + + + + + + + + + + + * + * * * + * * + * + * + * + * * * + * * * + + * * + * + * * + * + + * * + + + + * * * * * * + + * * + * + + + + * * + + + + * + + * * * * * + * * + + * * * + * + * * * * * * + + * + + * + * + * + * * * * + + * * * * * * * * * * + * * + + + + * + + + + * * * + + + * + + + * + + * + + * + * + + + + + * * + * * + * + * * + + * + * * * + * + + * + + * + + + + + + * + + * + + + * + + * + * + * * + + + + * + + + * + + * + + + + * + * + * * * + + * + + + * * * + + + + * * * + * + * + + + * * * + * * * * + + + * + + * + + * + + * * * + * * + * * * + * + + + * * + + * * + * + + * + + + * * * * * + + + * * * * + + * * * + * + + + + * + * + + * * + + + * * + * + + + * + + * + * * * * * + + + * * + + * * + + + + + * * + + * * * * + * + + * + + * + * + * + * * * + + + * + + * + * + * * * + * * + * + + * * * + + + * * * * + * * + + * + + + + * * + + * + + * + + + * * + * * + * + * + * * + + + * + * + * * + * + + * + + + + * * * * * * + + + * * + + + * * * + + + * + * + + + + * + + * * + + + * * * + * * * + * + + + * + * + * + + + + * + + + * * + + * + * * + * + + + + + * * + * * + + + * * * + + + * + + + * * * + + + + * * * * + * + * * + + * + + + * * * * + + * + + * + + + + * * * * * + * + * + * * * + + * * * * + * * + + * * * * + * * + * * * * + * + + * + * * + + * + * + + + * * * * + * + + * * + * * * + + * + * + + * * * * + * + + + + * * + + * * * + * * * * + + * + + * * * + * + + + * + + * + + * + * + * * * + * + + * + + * * + * * + * * + + + * + + * * * + + * + * * + * * + + * + + * * * + * * * * * * + * * * * * + * * + * * * * * * + * * * * + * + * * + + * + * + + * * + * * + * * + + * * + * * + + + * * * * + * + + + + + + + + * * + * * + * + * + * + * * * + * + + * + * + * + * + * + * * + * + * + + * + * * + * + + * * + + + + * + + + + + * * + * + + * * * * + * + + * * * * + * * + + + * * * * +

View File

@@ -0,0 +1,4 @@
123 328 51 64
45 64 387 23
6 98 215 314
* + * +

142
2025/inputs/07_1.txt Normal file
View File

@@ -0,0 +1,142 @@
......................................................................S......................................................................
.............................................................................................................................................
......................................................................^......................................................................
.............................................................................................................................................
.....................................................................^.^.....................................................................
.............................................................................................................................................
....................................................................^.^.^....................................................................
.............................................................................................................................................
...................................................................^.^.^.^...................................................................
.............................................................................................................................................
..................................................................^.^.^.^.^..................................................................
.............................................................................................................................................
.................................................................^...^...^.^.................................................................
.............................................................................................................................................
................................................................^.^.^...^...^................................................................
.............................................................................................................................................
...............................................................^.....^...^...^...............................................................
.............................................................................................................................................
..............................................................^...^.^.....^.^.^..............................................................
.............................................................................................................................................
.............................................................^.^.^...^.......^.^.............................................................
.............................................................................................................................................
............................................................^...^.^.....^.^.^.^.^............................................................
.............................................................................................................................................
...........................................................^.^.....^.^.....^.^.^.^...........................................................
.............................................................................................................................................
..........................................................^.^...^.^...^.^.^.^.^...^..........................................................
.............................................................................................................................................
.........................................................^...^.^.....^.^.....^.^.^.^.........................................................
.............................................................................................................................................
........................................................^.^.^.......^.^.^.^.^.^.^.^.^........................................................
.............................................................................................................................................
.......................................................^.^.^.....^...^.....^.^.^...^.^.......................................................
.............................................................................................................................................
......................................................^...^.^.^.^.^.^.^.......^.^.^.^.^......................................................
.............................................................................................................................................
.....................................................^.^.^...^...^...^.....^.......^.^.^.....................................................
.............................................................................................................................................
....................................................^...^...^.^.^...^.^.^.^.^...^.^.^...^....................................................
.............................................................................................................................................
...................................................^...^...^.^...^.^...^...^...........^.^...................................................
.............................................................................................................................................
..................................................^.^.^.^.^.......^.^.^.^.^...^.^...^.^.^.^..................................................
.............................................................................................................................................
.................................................^.^.^.^.....^.^.^.......^.^.......^.^.^.^.^.................................................
.............................................................................................................................................
................................................^...^.^.^.^.^.^.^.^.^.^.^.....^...^.^.^...^.^................................................
.............................................................................................................................................
...............................................^.^...^...^.^.^.^...^.^.^.^...^.^.^...^.^.^...^...............................................
.............................................................................................................................................
..............................................^...^.^...^.^.^.....^.^.^.^...^.^.^.^.^...^.....^..............................................
.............................................................................................................................................
.............................................^.....^...^...^.^...^.....^.^.^.^...^.......^.^...^.............................................
.............................................................................................................................................
............................................^.^...^.^.^.^.^.^.^...^.^.^.^.^...^.....^.^.^.^...^.^............................................
.............................................................................................................................................
...........................................^.^.^.^.^.^.......^.^...^.^.^.....^.^.^.......^...^.^.^...........................................
.............................................................................................................................................
..........................................^...^.^.^.^.^.^.^...^.^.....^.^.^.^.....^.^.^.^...^.^.^.^..........................................
.............................................................................................................................................
.........................................^.^...^...^.....^.^...^.^.^.^...^.......^...^...^.^.....^.^.........................................
.............................................................................................................................................
........................................^.^...^.^.^.^...........^.^...^.^.....^...^.^.....^.^...^.^.^........................................
.............................................................................................................................................
.......................................^.^...^.^.^.^.^...^.^.^...^.^.....^.......^.^.^.^.....^.^.....^.......................................
.............................................................................................................................................
......................................^...^.^.^...^.......^...^.^.^...^...^.^.^...^...^.....^...^.^.^.^......................................
.............................................................................................................................................
.....................................^.^.^.^.......^.^...^.^.^.^.^...^.^.....^.^.^.^...^.^.^.^...^.^.^.^.....................................
.............................................................................................................................................
....................................^...^...^.^.^.^.^.....^.^.^.^...^...^.^.^.^.^.^.^.^.^...^.^.^.^.^.^.^....................................
.............................................................................................................................................
...................................^.....^.^...^...^.^...^.^...^.^.^.^.......^.^.^.^.^.^.^.^...^.^.^.^.^.^...................................
.............................................................................................................................................
..................................^.^.^...^.^.^...^.^.^...^.^.^.^.^.^.^.^.^.^.^...^.^.^...^...^...^.^.^.^.^..................................
.............................................................................................................................................
.................................^.^.^.^.^.^.^.^.^.^.^.^.^.^...^.^.^.^.^.^.^.....^.^...^...^.^...^.^.^.^...^.................................
.............................................................................................................................................
................................^.^.^.....^.^.....^...^.^.^.^.^.^...^...^.^...^.....^.^.^.^.^.^.^.^.^...^.^.^................................
.............................................................................................................................................
...............................^.^.^.^.....^.^.....^.^.....^.^.....^.....^.^...^.^.....^.^.....^...^.^.^.^.^.^...............................
.............................................................................................................................................
..............................^.^.^.^...^.....^.^.^.........^.^.......^...^...^...^.^.^.^.......^.^.^.^.^.^.^.^..............................
.............................................................................................................................................
.............................^.^.^.....^.^.^.....^.^.^.^...^.....^.^.^.^.^...^.^.^.^.^.^.^...^.^.^.^.......^.^.^.............................
.............................................................................................................................................
............................^...^.^.^.^.^...^.^.....^.^...^...^.^.....^.^...^.^.^.^...^.^.^.^.^.^...^.^...^.^.^.^............................
.............................................................................................................................................
...........................^.....^.^.^.^.^...^.^.^.^.........^.^.^.^.^.^.^.^.^.^.^.^.^.^.....^.^.^.^.^.^.^.^.^.^.^...........................
.............................................................................................................................................
..........................^.^.......^.^.^...^.^.^.^.^...^.^.^...^.^...^.^.^.^...^...^...^.^...^...^.^.^.^.^.^.....^..........................
.............................................................................................................................................
.........................^.^.^...^.^.^...^.^...^.^.^.^.^.^.^.......^.^.^.^...^.^.....^.....^.^.^.^...^.....^.^.^...^.........................
.............................................................................................................................................
........................^.^.....^.^.^.^.^.^.^.^.^.^.^.^.^...^.^.^.^.^.^.^...^.....^...^.^.^.^.^.^.^.....^.^...^.^.^.^........................
.............................................................................................................................................
.......................^.^.^.^...^...^...^.^.^...^.^.^.^.^.....^.^.......^.^...^.^...^.^.^...^...^.^.^...^.^.....^...^.......................
.............................................................................................................................................
......................^.^.........^.....^.^.....^...^...^...^.^.^.^.^.......^.^...^...^.^.^.^.......^.^...^.^.^...^.^.^......................
.............................................................................................................................................
.....................^.^.^...^...^.^...^.^.^...^...^.^.^.^.^.^.^...^...^.^.^.^.....^.^.^...^.^.....^...^...^...^.^.^.^.^.....................
.............................................................................................................................................
....................^.^.^...^.^.^...^.^.^.....^.......^.^.^.^.^.^.^.^.^.^...^.^.^.^.^.^.....^.^.^.^.^.^...^.^.^...^.^.^.^....................
.............................................................................................................................................
...................^.....^.^...^.^...^.^...^.^.....^...^.^.^.......^.^.^.^.^.^.^.^.^...^.^.^.^.^...^.^.^.^...^.^.^.^.^...^...................
.............................................................................................................................................
..................^.^.^.^.^.^.^...^.^.^.^.....^.^.^.^.^.^.^...^.^...^...^...^.^.^.^.......^.^.^.....^.^...^.^.^...^.^...^.^..................
.............................................................................................................................................
.................^...^.^.^.^.^...^.......^.^.^.....^.^...^...^.^.^...^.^...^...^...^...^.^.^...^...^.^...^.^.^.^.^.^.^.^.^.^.................
.............................................................................................................................................
................^.^...^...^.^...^.^.....^.^.^.^.^.^.......^.^.^...^.^.^.^.^.^.^.^.^...........^.^.^.....^.....^.^.^.^.^.^...^................
.............................................................................................................................................
...............^.^.^...^.^.^.^.^.^.........^.^.^.^.^.......^...^.....^...^.^...^.....^...^...^...^.^.^.^.^.^.^.^.^.^.^.^.^.^.^...............
.............................................................................................................................................
..............^.^.^.^.^.^.^.^.^.^.^.^...^.^...^.^.^.^.^...^.^...^.......^.^...^.^.^...^.....^.^.^...^.^.^.^.^...^.^.^.^.^...^.^..............
.............................................................................................................................................
.............^.^.^.^.^...^.^.^.......^.^.^...^.^.^.^...^.^.^.^...^.....^.^.......^.^.........^.^.^.^.^.....^.^.^.^.^.^.^...^.^.^.............
.............................................................................................................................................
............^...^.^...^.^.^.^.^.^...........^.^.^.^.^.^.^.^.^.^.....^.^.^.^...^.....^.^.......^...^.^...^.....^.^.^...^.^.^...^.^............
.............................................................................................................................................
...........^.^.^.^.^.^.^.....^.^...^.^.^.^.^.^.^.^.^...^.^.^.^.^.^.....^.^.^.^.^.^...^...^.^.^.^...^.^.^.^...^.^.^.^...^.^.^.^.^.^...........
.............................................................................................................................................
..........^...^.^.^.^.^.^...^...^.^...^.^.^.^.^.^...^.^...^.^.^.^.^.^.^.^...^.^.^...^.^.^...^.^.^.^...^...^.^.^.^.^.^...^.^.^.^.^.^..........
.............................................................................................................................................
.........^...^.^...^.....^.^.^...^.......^.^.....^.......^...^...^...^.^.^.^.^.^.^.....^.^.^.....^.^.^.^.^...^.^.^.^.^.^.^.^.^.^.^.^.........
.............................................................................................................................................
........^.^...........^...^.......^.^...^.^.^...^.^.^.^...^.^...^.^.^.......^...^.^.^.^.^.^.^.^.^.^.....^...^...^.....^.^.^.^.^.^.^.^........
.............................................................................................................................................
.......^...^...^.^.^...^.^.^.....^.^...^.^.^...^...^.^.^.^.^.^.^.^.^.^.^.^.^...^.^.^...^.^...^...^.^.^...^.^.^.^.^.....^...^.^.....^.^.......
.............................................................................................................................................
......^...^.^...^...^...^.^.^...^.^.^.^...^...^.^.^...^.^.....^.^.^...^.....^...^.^...^.......^.^...^.^.....^...^.^.^.^.^.^.^.^.^.^...^......
.............................................................................................................................................
.....^.^.^.^...^.^.....^.^...^.^.......^.^.^.^.^.^.^.^.^.^...^...^.^.^.^.^...^.^.^.^.^.^.^...^.^.^.^.^.^.^.^.^...^.^.^.^.^.^.^...^...^.^.....
.............................................................................................................................................
....^...^...^.^.^.^...^.^.^...^.^.....^.^.^...^.^.^.^...^.^.^.^.^...^.^.^.^.^...^.^.^.^.^.^.......^.^.^.^.^.....^.^.^.^...^.^.^.^.^...^.^....
.............................................................................................................................................
...^.^...^...^.......^...^.^.^...^.^.^.^.^.^.^.^.^.^.^...^.^...^.^.^.^.^...^...^.^...^...^.^.^.^.^.^.^.^.^.....^...^.^...^.^...^.^.^.^...^...
.............................................................................................................................................
..^.^.........^.^.^.^.^.^.^.^.^.^...^.......^.^.^.^...^.^.^.^.^.^.^.^.^.^.^.^.^.^.^.^...........^.....^.^.^.^.^.^.^.^.^.^.^.^.^...^.^...^.^..
.............................................................................................................................................
.^.^.^.^.^.....^.^.^.^.^.^.^.^.^.^.....^.^...^.^.^.^.^.^...^.^...^.^.^.^.^...^...^...^...^.^.^.^.^.^...^.^.^.^.^.^.^.^...^.^.^.^.^.^.^.....^.
.............................................................................................................................................

View File

@@ -0,0 +1,16 @@
.......S.......
...............
.......^.......
...............
......^.^......
...............
.....^.^.^.....
...............
....^.^...^....
...............
...^.^...^.^...
...............
..^...^.....^..
...............
.^.^.^.^.^...^.
...............

1000
2025/inputs/08_1.txt Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,20 @@
162,817,812
57,618,57
906,360,560
592,479,940
352,342,300
466,668,158
542,29,236
431,825,988
739,650,466
52,470,668
216,146,977
819,987,18
117,168,530
805,96,715
346,949,466
970,615,88
941,993,340
862,61,35
984,92,344
425,690,689

496
2025/inputs/09_1.txt Normal file
View File

@@ -0,0 +1,496 @@
98149,50096
98149,51320
98283,51320
98283,52552
98418,52552
98418,53717
97561,53717
97561,54916
97402,54916
97402,56191
97852,56191
97852,57374
97504,57374
97504,58479
96769,58479
96769,59792
97171,59792
97171,60938
96714,60938
96714,62177
96649,62177
96649,63356
96328,63356
96328,64508
95920,64508
95920,65463
94945,65463
94945,66631
94632,66631
94632,67713
94088,67713
94088,69039
94123,69039
94123,70099
93515,70099
93515,71061
92720,71061
92720,72524
92910,72524
92910,73136
91489,73136
91489,74419
91293,74419
91293,75648
90966,75648
90966,76623
90221,76623
90221,77323
89089,77323
89089,78420
88541,78420
88541,79539
88005,79539
88005,80155
86832,80155
86832,81503
86549,81503
86549,82398
85716,82398
85716,82997
84574,82997
84574,84354
84217,84354
84217,84671
82826,84671
82826,85481
81928,85481
81928,86391
81114,86391
81114,87480
80436,87480
80436,88103
79372,88103
79372,89046
78552,89046
78552,89441
77335,89441
77335,89838
76141,89838
76141,90654
75227,90654
75227,91365
74239,91365
74239,92081
73247,92081
73247,92782
72239,92782
72239,93026
70998,93026
70998,93413
69842,93413
69842,94169
68850,94169
68850,94753
67772,94753
67772,94968
66552,94968
66552,95166
65337,95166
65337,96281
64419,96281
64419,96109
63094,96109
63094,96659
61981,96659
61981,96466
60685,96466
60685,96669
59493,96669
59493,97420
58401,97420
58401,97047
57111,97047
57111,98113
56029,98113
56029,97715
54755,97715
54755,97760
53541,97760
53541,97640
52320,97640
52320,98082
51122,98082
51122,98415
49903,98415
49903,97492
48701,97492
48701,98259
47455,98259
47455,97501
46287,97501
46287,97603
45063,97603
45063,97948
43795,97948
43795,97422
42638,97422
42638,96938
41490,96938
41490,96859
40272,96859
40272,96275
39163,96275
39163,96615
37830,96615
37830,95679
36830,95679
36830,95815
35524,95815
35524,95641
34297,95641
34297,94734
33330,94734
33330,94188
32246,94188
32246,93771
31112,93771
31112,93562
29878,93562
29878,92941
28829,92941
28829,92633
27621,92633
27621,92127
26507,92127
26507,90926
25797,90926
25797,91063
24291,91063
24291,89724
23705,89724
23705,89668
22272,89668
22272,88546
21576,88546
21576,88024
20445,88024
20445,87398
19380,87398
19380,86115
18869,86115
18869,85268
18007,85268
18007,84643
16936,84643
16936,83906
15957,83906
15957,82842
15310,82842
15310,82330
14071,82330
14071,80937
13816,80937
13816,80518
12418,80518
12418,79314
11971,79314
11971,78448
11096,78448
11096,77441
10404,77441
10404,76510
9599,76510
9599,75048
9633,75048
9633,74084
8898,74084
8898,73037
8297,73037
8297,71955
7763,71955
7763,71218
6522,71218
6522,69800
6678,69800
6678,68987
5508,68987
5508,67570
5755,67570
5755,66636
4802,66636
4802,65333
4844,65333
4844,64195
4435,64195
4435,63235
3393,63235
3393,61931
3537,61931
3537,60707
3437,60707
3437,59485
3372,59485
3372,58325
3010,58325
3010,57128
2838,57128
2838,55962
2421,55962
2421,54802
1820,54802
1820,53521
2508,53521
2508,52311
2539,52311
2539,51115
2219,51115
2219,50089
94539,50089
94539,48701
2499,48701
2499,47465
1920,47465
1920,46251
2036,46251
2036,45011
1902,45011
1902,43822
2259,43822
2259,42693
2933,42693
2933,41483
3024,41483
3024,40315
3347,40315
3347,39095
3432,39095
3432,37844
3437,37844
3437,36624
3606,36624
3606,35415
3840,35415
3840,34519
5004,34519
5004,33174
4846,33174
4846,32153
5579,32153
5579,31033
6045,31033
6045,29764
6189,29764
6189,28954
7311,28954
7311,27722
7558,27722
7558,26834
8459,26834
8459,25657
8836,25657
8836,24362
9050,24362
9050,23308
9676,23308
9676,22505
10665,22505
10665,21542
11408,21542
11408,20615
12195,20615
12195,19321
12528,19321
12528,18910
13931,18910
13931,18053
14782,18053
14782,16947
15368,16947
15368,15986
16122,15986
16122,15275
17123,15275
17123,14036
17638,14036
17638,13749
19005,13749
19005,12493
19542,12493
19542,11719
20490,11719
20490,11063
21528,11063
21528,10484
22613,10484
22613,9632
23511,9632
23511,9231
24702,9231
24702,8969
25957,8969
25957,7711
26638,7711
26638,7493
27904,7493
27904,6884
28957,6884
28957,6354
30051,6354
30051,5683
31086,5683
31086,5537
32342,5537
32342,4632
33300,4632
33300,4368
34504,4368
34504,4004
35669,4004
35669,3899
36908,3899
36908,3887
38158,3887
38158,2838
39155,2838
39155,2664
40370,2664
40370,2502
41585,2502
41585,2442
42811,2442
42811,2202
44009,2202
44009,1773
45193,1773
45193,1779
46424,1779
46424,2113
47667,2113
47667,2461
48890,2461
48890,1879
50096,1879
50096,2150
51308,2150
51308,2067
52526,2067
52526,2162
53739,2162
53739,2567
54919,2567
54919,2277
56174,2277
56174,2732
57337,2732
57337,2982
58524,2982
58524,2825
59792,2825
59792,3597
60865,3597
60865,3656
62098,3656
62098,4231
63195,4231
63195,3956
64547,3956
64547,4822
65543,4822
65543,5323
66648,5323
66648,5708
67794,5708
67794,6332
68842,6332
68842,6545
70071,6545
70071,7095
71152,7095
71152,7819
72140,7819
72140,8090
73371,8090
73371,8558
74506,8558
74506,9355
75446,9355
75446,9575
76758,9575
76758,10546
77577,10546
77577,11065
78709,11065
78709,12226
79360,12226
79360,13026
80271,13026
80271,13333
81605,13333
81605,14454
82243,14454
82243,15429
82993,15429
82993,16448
83686,16448
83686,16730
85140,16730
85140,17580
86027,17580
86027,18788
86504,18788
86504,19587
87450,19587
87450,20649
88074,20649
88074,21621
88808,21621
88808,22620
89504,22620
89504,23897
89778,23897
89778,24528
91047,24528
91047,25567
91695,25567
91695,26551
92445,26551
92445,27672
92953,27672
92953,29003
93020,29003
93020,29887
94005,29887
94005,31018
94478,31018
94478,32106
95057,32106
95057,33388
95127,33388
95127,34671
95140,34671
95140,35702
95891,35702
95891,36936
96002,36936
96002,38053
96524,38053
96524,39176
97068,39176
97068,40340
97484,40340
97484,41668
97025,41668
97025,42848
97316,42848
97316,44004
97834,44004
97834,45193
98224,45193
98224,46461
97726,46461
97726,47670
97819,47670
97819,48871
98356,48871
98356,50096

View File

@@ -0,0 +1,8 @@
7,1
11,1
11,7
9,7
9,5
2,5
2,3
7,3

200
2025/inputs/10_1.txt Normal file
View File

@@ -0,0 +1,200 @@
[######] (0,1,3,5) (0,4) (0,1) (1,4) (1,2) (1,3,4,5) {21,37,18,9,8,9}
[..#.##] (0,1,3,4,5) (3) (0,1,3,5) (3,5) (1,5) (0,2,3,5) (0,1,2,3) (0,2,4) {25,12,13,57,14,38}
[....###] (1,2) (4,5,6) (2,3,6) (0,1,2,6) (0,4,5,6) (1,4) (0,1,2,3,4) (2,4,5) {43,172,55,21,159,17,33}
[...#..#] (1,5) (0,1,4,5) (1,2) (2,3,4,6) (1,3,5,6) (0,1,2,3,5) (0,1,3,4,6) {42,85,34,41,27,52,26}
[...##] (0,3) (0,1,2,4) (3,4) (0,1,3) (1,4) (0,1,2,3) (0,1,2) {63,62,36,39,35}
[###..#####] (3,4,5,6) (0,2,3,5,6,8,9) (0,1,2,3,4,5,8,9) (1,6,7,8) (0,1,2,4,5,6,8,9) (0,1,3,5,7,8) (2,5,6,7) (1,2,4,5,7,9) (0,3,7,9) {82,53,68,90,49,107,71,61,69,65}
[#####] (0,1,2,4) (0,2,4) (0,2) (0,1,2) (3,4) {49,16,49,4,32}
[...#] (2,3) (0,1) (0,2) (3) {8,5,22,19}
[.###..#] (0,4,5) (1,4,6) (3,5,6) (1,2,3,5,6) (1,2) (3,6) (0,1,2) (0,1,6) {19,54,20,23,15,6,57}
[..##..##.#] (1,3,4,7) (1,2,3,4,5,6,7,9) (1,3,5,6,8,9) (0,2,4,6,8) (3,4,8) (0,1,2,3,6,8) (0,1,2,3,4,5,7) (1,2,3,4,6,8) (0,3,5,8) (0,5,8) (0,1,3,7) (6,9) {243,261,221,287,46,51,255,36,264,42}
[.##..##..#] (4,5,6,7) (0,1,3,5,6,7,8,9) (1,3,4,9) (2,3,4,6,7,8) (0,1,2,3,5,7,8,9) (0,1,8) (7,8) (2,3,4,5,6) {28,42,26,46,42,39,34,30,36,27}
[##.###] (1,2,4) (0,2,3,4) (0,1,2,3,4) (1,4,5) {27,220,219,27,235,16}
[###..] (0,1,4) (0,3,4) (0,1,2) {212,210,14,2,198}
[#..#...##] (0,2,3,8) (2,3,5,7,8) (1,3,8) (1,3,4,5,6,7) (2,3,5,6,7) (0,1) (0,3,4) (0,5,6,7) (1,3,4,5,6,8) {27,127,53,172,119,155,136,146,46}
[#...##] (0,3,4) (2,3,4) (1,5) (3,4) (0,2,4,5) {3,6,18,29,31,8}
[###.......] (3,4,5,7) (0,3,5,6,9) (2,4,6,8,9) (1,2,6,8,9) (0,3,4,5,6,7,8,9) (0,5,6,9) (3,5,6,9) (0,6,8,9) (4,5,6,7,9) (0,1,2,3,6,9) {43,20,34,54,44,76,94,30,27,94}
[##.#.#.##.] (0,2,4,5,6,7,8,9) (1,2,4,6,7,9) (1,4,5,6,8,9) (3,4,6) (0,2,7) (1,3,4,5,6,7,8,9) (0,5,6,7,8,9) (0,1,2,3,4,7,9) (0,1,4,5,6,7,9) (4,5,6,7,8,9) {54,52,50,18,72,47,71,85,30,71}
[...####.] (2,3) (1,3,4,5,7) (1,3,6) (0,1,3,5,6,7) (1,3,7) (0,1,4,5,6,7) (2,4,6,7) (1,7) (1,2,3,5) (1,2,3,4,6) {31,100,51,87,60,64,64,65}
[###.#..##] (4,5,6,8) (1,2,3,5,6,8) (0,2,3,4,5,8) (0,1,2,4,7,8) (0,4,5,7,8) (0,1,2,3,4,7,8) (6,7) {59,28,42,34,68,44,16,50,70}
[###.#...#.] (1,2,9) (0,1,2,3,4,5,6,8) (1,3,6) (0,1,7) (3,4,5,8) (0,2,3,4,5,6,7,8) (0,1,2,4,7) (0,3,4,7,8,9) (0,1,3,4,5,6,7,8) {263,252,42,250,257,222,220,250,239,20}
[#.#...#] (2,4,6) (2,3) (0,2,6) (3,4) (1,2,3,4,5) (1,5,6) (0,2,4,5,6) {18,8,42,25,20,12,23}
[#.#.] (0,2) (0,1,3) {12,3,9,3}
[.#..#.] (0,1) (0,1,5) (3,5) (1,2,5) (1,4) {14,27,4,4,9,10}
[#####..] (0,4,6) (0,1,2,3,4,6) (0,2,3,4,6) (0,1,5) (2,5) (0,1,2,3,5,6) {30,22,24,13,15,26,18}
[...##] (0,1,2) (2,3) (0,2,4) (0,4) (1,2) {23,199,219,12,12}
[.##..] (0,1,3) (0,3) (1,2) (0,3,4) {37,22,10,37,7}
[.#...#] (0,5) (0,1,2,3) (2,3) (1,3,4,5) (1,2,4,5) {36,212,37,200,195,214}
[.##.##..#.] (3,4,5,6,7,8) (3,7) (1,4,5,6,7,8,9) (1,2,4,9) (0,1,5,7,8,9) (0,1,2,4,6,8,9) (0,1,2,3,4,5,8) (0,3) (0,2,3,4,5,6,7) (0,1,5) (0,5,9) (0,1,2,3,4,5,8,9) (3,6) {183,186,153,191,181,205,55,66,166,69}
[.#...#] (1,5) (0,1,3,4) (0,1,2,3,4,5) (0,2) {45,48,29,36,36,32}
[...#.#] (0,1,2,3,5) (0,2,3,4) (3,5) (1,2,3,5) {21,18,33,37,15,22}
[##.#..###] (0,1,2,3,5,6,8) (1,2,3,4) (0,1,5,6,8) (1,2,4,5,6,8) (0,7,8) (1,2,3,4,6,7) (2,3,4,5,6,7,8) {57,60,145,139,128,148,159,136,168}
[....#.#] (3,4) (0,2,5,6) (1,6) (2,3,4,6) (0,2,4,5) {13,10,18,14,25,13,17}
[#......] (0,1,2,4,5) (0,1,2,3,4) (2,4,5,6) (1,2,3,4,6) (0,1,2,3,6) (0,1) (3,5,6) {43,47,64,39,49,35,41}
[#.....##] (1,6,7) (0,2,4,5,6) (0,3,4) (3,4,6) (0,1,2,4,5,6,7) (0,1,7) (0,6,7) (1,4,7) {42,39,24,16,52,24,36,42}
[##....###] (4,7,8) (0,2,3,4,5,6,8) (0,1,3,5,6,8) (1,2,5,7,8) (0,1,2,4,5,6,8) (4,6) (3,4,5,6,7) (0,1,2,3,5,7,8) {39,45,50,48,50,72,52,52,56}
[..##....] (0,3,7) (0,2,3,4,5,7) (1,4,7) (1,2,3,4,5,6) (2,3,4,7) (0,6) (0,1,2,5,6) {38,184,198,192,190,195,197,19}
[...##] (0,1,2,4) (0,2,4) (1,3,4) (0,1,2) (1,2) (1,2,3,4) (1) {41,69,58,21,50}
[#.#......] (0,1,5,6,7) (0,2,3,4,5,7,8) (0,1,2,3,4,5,8) (0,1,2,4,6) (1,3,4,5) (1,3,4,6,8) (3,5,6,7,8) (1,2,8) (6,8) (6,7,8) {14,29,16,28,20,22,54,26,60}
[.##..#..##] (1,2,4,6,8) (0,1,2,3,4,5,6,8,9) (0,2,3,4,8,9) (4,5) (0,1,2,3,6,8,9) (0,3) (0,2,3,4,6,7,9) (0,3,4,6,7,8) (0,3,4,5,7,8,9) {85,39,42,85,211,192,53,32,70,56}
[#...#] (0,1,2,3) (1,2,3,4) (1,2,3) {19,35,35,35,0}
[#####] (0,1,3,4) (2) (0,2,3) {10,1,12,10,1}
[.##..#..#.] (0,1,2,3,6,7,8,9) (0,1,4,9) (2,3,4,6,9) (0,1,2,3,4) (7,9) (1,2,3,4,5,6,7,9) (8) (1,4,5,6,7,8,9) (1,4,6,8) (0,2,4,6) (0,4,8) (0,1,3,5,6,7,8) (7) {46,60,51,51,69,30,56,48,139,57}
[..##.###.] (1,5,8) (0,5,7,8) (0,1,3,4,6,7,8) (1,2,3,4,5) (6,8) (3,5,7,8) (0,1,2) (4,6,8) (0,1,6,7) (4,5,8) {179,67,33,28,37,198,39,172,202}
[#...##.] (0,1,2,3,5) (0,1,5) (0,5) (0,1,3,4,5,6) (1,2,4,6) (1,6) (1,4) (0,1,2,3,4,6) (4) {50,60,30,33,55,34,29}
[.#.#] (0,1,2) (1,3) {190,210,190,20}
[#.###.#.#] (1,4,8) (0,2,4,5,6,7,8) (0,1,2,3,5,7,8) (0,1,4,6) (3,4,5,6,7) (1,4,6) (0,2,4,5,7,8) (0,1,2,3,5,6,7) (0,1) {52,58,34,25,73,48,63,48,41}
[..#.....#] (0,1,2,3,6,7,8) (0,1,2,3,4,6,7,8) (0,1,2,4,5,8) (0,1,2,4,6,8) (0,1,2,3,4,7,8) (1,2,3,4,6,7,8) (0,1,3,6,7) (2,5,6,8) {185,193,81,158,63,18,178,158,81}
[#####..##] (0,1,4,5,6,7,8) (6,7) (2,3) (0,3,4,5,6,7,8) (1,6) (0,1,2,3,4,7,8) (2,7) (0,3,7,8) (0,2,3,7,8) (2) (1,2,4,5) {86,66,80,88,70,52,65,100,86}
[#####.#.#] (0,1,2,5,6,7,8) (1,3,5,6,8) (2,8) (1,2,8) (2,3,4) (2,3,4,6,7) (0,2,3,4,5,7,8) (1) (5,6) (0,1,2,3,4,5,6) (3,4,6,7,8) {204,227,242,240,231,217,239,37,53}
[#.....##] (2,3) (0,1,2,3) (3,5) (1,4,6) (6) (0,2,5,7) (1,2,3,4) {20,213,35,34,204,21,195,11}
[##.###.#.] (4,6) (5,6) (0,3,7) (0,2,3,4,5,6,7) (1,2,3,7,8) (2,5,6,8) (0,2,8) {32,12,165,38,25,158,166,38,148}
[#######.] (1,3,4,5,7) (2,7) (1,2,3,4,5,7) (0,1,4,5,6,7) (1,2,4,5,7) (0,6) {9,62,40,39,62,62,9,66}
[#..#] (1,3) (2,3) (0,2) (0,3) (0,1,3) (0) {40,22,15,34}
[####.#####] (0,1,5,6,7,8) (0,2,3,4,7,8,9) (0,4,7,8) (1,4,5,7) (2,3,5,7,9) (0,2,3,4,6,7,8) (0,1,2,5,6,8,9) (1,3,4,7,9) (0,1,2,3,5,6,8,9) (0,1,2,3,4,5,9) (5,8,9) (1,4,6,8,9) (0,1,2,3,4,7,8) {233,238,81,87,66,252,209,225,235,106}
[.###.] (3) (1,3) (0,2,3) (1,4) (0,1,2) (0,1,4) {26,31,7,24,30}
[.###..] (0,1,4) (5) (1,2,4) (2,3) (3,4,5) (1,3) {3,20,204,202,14,18}
[...###] (3,5) (3) (0,1,2,5) (0,1,2,3,5) (0,3,4,5) (0,2,3,5) (0,1,3,4) (4,5) {62,27,37,79,44,82}
[###...#] (1,2,4) (0,1,5,6) (0,1,2,3,4,6) (2,4,6) (1,4,6) (0,2,4,5,6) (5,6) {30,44,48,4,59,31,55}
[#.##..#.] (1,3,5,7) (3,7) (1,2,3,5,6,7) (0,2,3,4,5,6) (0,1) (4,6) (1,7) (1,5) (0,4) (0,5) {58,61,34,48,57,82,53,39}
[.#.#....#] (1,3,4,8) (0,1,3,5) (1,2) (0,1,2,3,4,6,7,8) (1,3,8) (0,4,5,7,8) (2,4) {47,55,48,44,64,28,19,38,54}
[##.##...#] (2,3,6,8) (5) (1,3,4,5,6,7,8) (1,3,6) (0,3,4,5,8) (0,1,3,6,8) (0,1,4,7) {39,20,14,47,28,25,27,8,47}
[.#..#] (0,2,4) (0,4) (0,1,2,3) (1,2,4) {8,12,13,4,12}
[.##.#..#.] (0,3,6,7,8) (0,1,2,3,4,6,8) (0,1,3,4,5,7,8) (0,1,2,4,5,6,8) (3,4,8) (4,5) (0,1,2,6,8) {53,45,38,32,56,39,46,15,60}
[##..] (0,3) (0,1,2) (1) (1,3) (0,1) (2,3) {37,48,21,39}
[..##...] (4,5,6) (0,3) (3,5) (1,2,3,4,6) (1,2,3,5,6) (0,3,5) (0,1,4,5,6) {36,46,38,245,37,238,57}
[#####..##] (0,4,6) (0,1,3,5,7,8) (1,4,5,6) (6,7) (1,3,4,5,6,7,8) (0,2,4,5,7,8) (2,5,6) (0,1,3,4,6,7) (1,3,4,5,6) (1,2,3,4,5,8) {32,60,11,45,48,65,63,49,37}
[.#.##.####] (0,1,2,3,4,5,6) (1,2,3,4,6) (0,1,2,3,4,5,6,7,9) (1,4) (0,1,2,3,4,6,7) (0,2,5,8) (1,2,6,7,9) (2,7,8) (0,3,4,5,7,8,9) (0,1,2,7,9) (2,3,4,6,7,8,9) (0,2,3,4,5,6,9) (5,7,8,9) {55,75,82,71,84,39,59,81,40,56}
[#....] (3) (0,3,4) (0,1,2,3) (0,1,3) (1,2,4) (1,2,3) (0,2) {32,26,18,42,25}
[#...#.#.] (0,2,3,4,6) (1,5,7) (0,6) (1,4,5,6,7) (0,1,2,3,4,5,7) (2,3,6) {23,29,29,29,30,29,58,29}
[.##.#..#] (0,1,3,4,5,6) (5,6,7) (0,1,3,4,5,7) (0,4,5) (3,4,5,6) (1,4,6) (2,3,4) (0,1,3,4,7) {30,37,3,36,47,39,27,29}
[#..#..#.] (2,3,4) (0,1,2,7) (1,2,3,4,5,7) (0,1,2,5,6,7) (0,1,3,4,5,6) (0,2,4,6) (0,2,4,6,7) (0,1,2,4,5) (0,1,2,3,5) (1,2,3,4,6,7) {75,100,105,70,66,71,44,62}
[####.] (0,2) (3,4) (1,4) (0,3,4) (0,1,2,4) (0,1,2,3) {42,28,30,31,29}
[##.###] (0,3,4,5) (0,1,3,4) (1,4) (1,2,3,5) (1,4,5) {20,51,13,33,39,33}
[.#.##] (0,3) (0,2,4) (1,3,4) {21,18,1,38,19}
[##..##] (0,1,4) (0,1,3) (1,4) (0,1,2) (2,4,5) (3,5) (0,1,2,3,5) {45,49,27,52,19,43}
[.##.] (0,2,3) (0,1) (0,1,3) {158,17,141,151}
[...#.#.#.#] (0,1,2,3,4,5,7) (0,2,3,4,6,9) (0,1,2,5,7,8) (0,2,3,4,6,7,8) (1,2,3,6) (1,2,6,8,9) (0,7) (0,2,5,6,8) (4,5) (2,5,8) (1,2,3,4,6,7,8,9) (3,6,7,8,9) {80,55,114,64,65,62,81,63,81,48}
[...#..#] (3,6) (2,3,5,6) (1,2,4,5,6) (3,4,6) (0,1,3,4,5,6) (0,1,6) (1,2,3,4,5,6) (0,5,6) {189,197,36,212,204,221,248}
[##..#.] (0,1,2,3) (0,2,3,5) (0,2,4,5) (1,2,3) (0,3,5) {42,19,46,36,10,27}
[#.###.##] (1,3,4,5) (0,1,3,6,7) (0,1,2,4,6) (3,4,6) (0,1,2,3,4,5,7) (0,2,3,4,5,6) {69,50,53,64,61,41,56,36}
[...###] (2,3,4,5) (0,1,3) (0,2,3,4) (2,5) (2,3) (0,1,2,3) (0,3,4,5) {61,30,67,81,36,34}
[###...##] (3,4,5) (3,4,5,6,7) (0,1,3,4,5,6,7) (0,2,3,6) (1,3) (1,2,5,6,7) (6) (0,1,2,6,7) (3,7) {33,48,39,212,12,28,69,222}
[#.#.] (2,3) (1) (0,2) (1,2,3) (0) (0,1,3) {19,30,34,40}
[#.##.] (0,2,3) (2) (1,4) {135,14,140,135,14}
[.##...#..#] (5,8) (0,1,2,3,5,7,8,9) (0,1,2,3,4,7,8,9) (4,5,8) (1,2,3,5,7,8) (1,2,6,9) (0,1,2,4) (1,2,3,4,6) (0,1,2,3,4,5,6,7,8) (3,4,6,7,8) (0,2,4,5,7,9) {53,68,84,53,59,64,36,54,60,62}
[#.###.##..] (1,2,3,7,8,9) (1,3,5,6,7) (1,4,9) (0,1,3,6,8,9) (0,1,2,5,6) (2,5,7) (0,1,3,4,6,7,9) (2,6,9) {38,68,42,39,11,56,63,39,17,33}
[.#.##..] (2,5) (1,3,4,5,6) (0,2,3,4,5) (3,4) (0,1,6) (2,4) (0,3,6) {28,15,42,53,52,50,19}
[##..###] (1,3,4,5,6) (0,1,2,3,4,5) (0,3,4) (2,6) (0,1,4,5,6) {34,39,27,37,51,39,50}
[######] (2,4,5) (1,3,4,5) (0,1,3,4,5) (0,3,4) (2,3,4,5) (0,1) {29,24,32,39,57,44}
[##.##] (1,3) (0,1,2) (0,4) (2,4) (2,3,4) {10,6,24,16,30}
[#....#....] (1,4,5,6,8,9) (0,2,4,5,6,9) (1,2,3,4,5,6,7,8) (2,4,6,9) (3,4,7,8) (0,4,5,7,8,9) (0,1,4,6,7,9) (1,4,5,8,9) (0,1,2,3,4,6,7,9) (1,3,6,7,8,9) (0,4,5,6,7,8,9) (0,1,2,4,5,6,7,8) {68,87,58,60,110,79,107,106,98,85}
[.##.] (0,2,3) (0,1,3) (1,2) {206,30,204,206}
[.###.#] (1,5) (0,2,3,5) (0,1,4,5) (0) (2,4,5) (1,2,3) (1,2,3,4) (1,2,3,5) {20,60,50,49,23,32}
[..####.] (0,3,5) (0,2,6) (2,3,4,5) (0,1,2,5,6) (1,3) (0,1,6) {40,21,22,23,5,27,26}
[#.###.##.] (0,4,6) (0,1,2,7,8) (0,1,3,6,8) (0,2,3,4,6,7,8) (1,4,7) (1,6,7) (0,1,3,5) (0,2,3,5,6,7,8) (1,3) (8) {81,64,31,63,42,30,68,53,211}
[#...##.#.] (0,3) (0,2,3,5,6,7,8) (0,1,2,4,6,8) (1,3,4,5,7,8) (1,2,3,5,6,8) (4,8) (0,1,2,7) (2,4,6) (0,1,2,3,6,7) (0,1,2,5,7,8) (0,3,5,6,8) {77,62,66,65,45,40,59,49,61}
[#....#] (1,2,3,4,5) (1,2,3,4) (0,1,2,3,4) (1,2,4,5) {20,41,41,36,41,13}
[###..] (0,2,4) (1,2,3) (0,2,3) (1,3) {21,10,27,27,4}
[..###] (0,1,2,4) (0,1,3) (2,3) (1,2) {19,19,115,108,13}
[.#....##] (1,4,6) (4,5) (0,1,2,6,7) (0,3) (3,4,5,6) (1,2,7) (0,3,4,7) {30,42,32,16,34,13,34,43}
[........##] (0,3,4,6,7) (0,1,4,5,6,7,8,9) (0,1,2,3,5,7,9) (0,1,2,4,6,7,9) (4,5,7,8) (1,2,3,4,7) (1,2,3,4,5,6,7,8,9) (0,1) (0,7,9) (0,2,3,5,6,8,9) {83,54,53,60,50,61,51,83,46,74}
[....#....] (0,1,2,5,6,7) (5,6) (0,2,5,7,8) (0,1,2,3,5,6,7,8) (1,2,3,4,5,6,8) (3) (1,2,3,4,6,7,8) (1,4,7) {20,27,27,26,16,28,19,29,20}
[#.#...] (0,2,3,4,5) (1,2,3,5) (2,4) (1,3,4) (0,3,4) (1,2,4) (0,1,2,4,5) {38,49,35,44,71,22}
[.####.] (0,1,3) (0,1,5) (0,1,3,4) (0,1,2) (1,2,5) (0,4) {165,164,130,14,16,31}
[.###...] (2,4,6) (1,3) (1,3,4,6) (0,1,3,4) (0,2,5) {17,50,20,50,54,0,37}
[###.#] (2,3,4) (0,3,4) (1,2,3,4) (0,1,2,3) (0,1,3) (1,2,4) {21,214,231,54,220}
[.#.#] (0,2) (0,1,2) (0,1,3) (2,3) (3) {176,158,46,169}
[##....###.] (0,1,4,5,6,7,8,9) (0,2,3,4,6,7,8,9) (0,1,3,4,5,6,8,9) (0,3) (0,1,2,3,5,6,7,9) (0,3,4,5,6) (1,2,3,4,6,7,8) (2,3,5,6) {248,43,55,260,234,235,262,55,46,46}
[#.###...#] (0,1,3,4,5,6,7,8) (1,2,3) (3,6) (1,2,5,7,8) (0,1,2,5) (0,1,2,3,5,7) (0,2,3,8) (0,2) {187,46,178,197,20,39,38,24,176}
[##.....] (6) (0,1,2,4) (1,2,3,5,6) (0,2,4,6) (1,3,4,6) (0,3,4) (0,1,3,4,5) (2,3,5) (0,1,5) {51,54,59,58,45,57,66}
[#.###.#.] (0,1,3) (0,1,2,4,6,7) (1,2,4,5) (0,4) (0,2,4,6) (0,1,2,3,4,5,6) (0,1,2,3,4,6) (0,1,5) (0,2,3,4,5,7) (0,1,2,4,5,6) {105,98,94,39,95,70,73,24}
[###.] (0,1,2) (1,2,3) {10,25,25,15}
[##....##] (0,2,3,4,5,6) (4,6) (3,4) (0,2,7) (1,2,4,5,6) (1,2,3,4,5,7) (1) {33,210,235,34,244,221,229,25}
[.##..#] (1,2,3,4,5) (1,2,3,4) (0,1,3,5) (4,5) (2,4) (2,3) (0,2,3,4,5) (0,3,5) {188,22,36,206,29,191}
[..##.#.#] (3,4,5,6) (0,3,6,7) (1,6) (0,1,3,4,6,7) (2,3,5,7) (0,1,2,5,6,7) (1,2,3,5,6) (0,1,3,5,6,7) {32,45,31,240,182,229,238,52}
[#..#.#.##] (0,2,4,5,6,7,8) (0,7) (0,1,3,5,8) (1,4,7) (1,2,3,4,5,6,8) (1,6) (3,4,5,8) (3,7) {23,32,8,26,16,28,28,17,28}
[..###..] (0,1,2,3,5,6) (2,3,6) (0,1,2,4,5,6) (0,1,2,4,6) (0,3,4,5) (2,3,4) {46,31,48,44,50,45,32}
[#.#.] (1,3) (0,3) (0,2) {21,7,15,13}
[#..#.] (0,1,2,3) (1,3,4) (2,3) (1,2,4) (1,4) (0,2) {15,36,31,26,24}
[.#......] (0,2,3,5,7) (0,1,3,5,6) (0,2,4,5,6) (0,1,2,5,6,7) (3,7) (1,2,3,4,5,7) (4,7) (0,4,5,6,7) {47,25,38,27,40,52,47,51}
[##.#...##.] (0,7,8) (4,5,7) (0,2,3,5,6,8) (1,2,4,5,7,8,9) (1,3) (0,2,3,5,6,7,8,9) (0,4) (1,2,3,4,5,6,7,9) {45,45,54,46,56,67,34,63,55,36}
[###.#] (1,2,3,4) (1,3) (0,2,3,4) (1,2) {8,31,21,26,8}
[.#..#.#] (2,5,6) (1,3,4,6) (0,3,4,5,6) (1,3) (0,3,5,6) (1,2,3,4,5) (3) (0,1,3,5) (0,2,6) {134,35,20,168,115,154,141}
[##.##..###] (4) (0,2,3,5,6,8) (0,1,5,8,9) (2,5,6,7,9) (0,1,3,4,7,8,9) (0,1,2,3,4,5,6,9) (4,6) (0,4,6,8,9) (3,5) {80,40,30,59,57,61,52,20,73,63}
[##....#.] (0,1,2,4,5,7) (2,3,4,5,6,7) (3,5) (0,4,6,7) (0,1,6) (0,1,2,4,6,7) {42,30,145,140,157,150,157,157}
[.#.#] (0,2) (1,3) (0,3) (0,1) {23,20,0,15}
[..###...] (0,5,6) (0,5) (1,2,3,4,5,6) (0,1,2,3,6,7) (0,2,3,4,5,6) (2,3,4,7) {40,13,34,34,21,27,29,23}
[..#....#.#] (1,5,7,9) (0,3,4,5,6,7,8) (3,5,9) (0,3,5,6,7,9) (7,8) (1,2,3,7,8,9) (0,2,4,5,7,8,9) (0,2,3,4,5,6,7,8) (0,1,3,4) (2,3,5,7,8) (0,1,2,6,7,9) {57,48,42,76,40,79,34,103,70,83}
[.###.#.#] (1,2,3,6) (3,5,7) (3,6,7) (1,2,5) (0,2,3,4,6) (0,1,4,5) (0,1,2,3,4,5,7) {26,44,48,61,26,37,41,34}
[..###] (0,1,4) (0,3,4) (1,2,3) (0,1,2,3) {14,6,2,10,12}
[.#......#] (2,3,6) (1,4) (0,2,3,4,5,7) (0,1,5,6,7) (3,7) (0,1,4,5,6,7) (0,1,3,6,8) (0,1,2,5,8) (3,4,6,7) {38,37,26,33,29,34,40,37,10}
[..##] (1,3) (1,2) (0,1,3) (0) (0,2,3) {31,35,28,37}
[##..] (0) (0,2,3) (0,2) (0,1,3) (0,3) (1,3) {222,2,15,21}
[#.#.#...] (1,2,3,4,5) (0,1) (1,2,3,5,6) (1,3,4,6) (2,3,5,6,7) (1,3,4,6,7) (0,1,2,3,4,5,6) (0,2) (1,3,5,6,7) {40,88,66,80,56,58,65,16}
[.#.#] (0,1,3) (0,2) (1) (0,2,3) (0,3) {57,20,28,45}
[..####] (1,2,3,5) (1,2) (0,2,3,4,5) (2,3,5) (0,1,3,5) (0,3,4,5) {174,42,57,206,161,206}
[...#.#.#] (0,1,2,3,7) (4,5,6) (1,2,4,7) (0,1,2,3,4,6) (0,1,2,7) (4,5) (1,2,3,5,7) {21,39,39,21,39,25,15,29}
[##...##..] (0,2,3,4,6,7,8) (3,4,5) (0,1,2,3,4,5) (2,8) (0,2,3,4,5,7,8) (0,1,4,6) (1,3,5,6,7,8) (0,7) {199,20,205,227,209,44,201,215,221}
[#...#.] (0,1,4) (0,3) (2,3,4,5) (1,5) (2,4) (1,4,5) (1,4) {2,175,8,6,176,159}
[##..#.#] (0,3,4,5,6) (0,2,4,6) (0,1,2,3) (1,2,3,4,5,6) (3,4,5,6) {24,147,162,170,184,169,184}
[#.#.#] (1) (3,4) (0,1,3,4) (0,2,3) {15,0,15,31,16}
[..##...] (1,3,4,5) (0,3,4,5,6) (1,3,4,5,6) (5,6) (0,4,5,6) (0,2,4,6) {37,31,14,40,68,56,59}
[#.##..##] (3,5,6) (1,2,6) (0,3,4,5,6) (0,1,2,5,6,7) (2) (0,2,4,6) (2,6) (0,2,3,4,7) (0,3,6) {48,8,40,38,29,17,40,26}
[####.] (1,3,4) (0,2,3) (0,1,2) (0,1,4) (1,3) (4) (0,4) {63,43,33,33,45}
[.#..###] (1,2,3) (0,2,4,6) (1,4,5,6) (0,2,4,5) (4,5,6) (0,1,5,6) (0,3,4,6) (1,3,4,5) (1,4) {44,51,29,17,48,49,49}
[.....#..] (0,4,5,6,7) (0,2,7) (0,1,5) (0,3,4,5,7) (1,2,4) (2,3,4,6,7) (1,4) {38,32,27,19,53,38,24,34}
[##.#.##] (0,2,3,5,6) (1,2) (1,3,4,5,6) (1,4,6) (0,4,5,6) (0,1,2,3,4,5) {49,31,33,43,47,61,54}
[.##.###.] (2,3,5,6) (0,1,2,3,5,6) (1,5,7) (0,1,2,4,6,7) (0,2,3,4,5) (0,3,6) {34,33,43,36,21,38,51,31}
[....##..#.] (0,2,6) (0,3,6,9) (3,4,5) (0,1,2,4,5,6,7,8) (0,1,2,3,4,6,8) (1,2,7,8,9) (2,3,4,5,7,9) (0,1,2,3,6,9) (0,2,3,4,5,7,8) (7,8,9) (1,2,3,4,5,6,7,8,9) (0,1,3,4,5,7,8,9) {56,38,58,66,44,35,35,38,44,42}
[....#.#] (3,4,5,6) (0,3) (2,3,4,5) (0,3,4,6) (1,3,6) (1,3,4,5,6) (0,2,3) (0) (1,2,3,4,5) {43,28,30,78,56,42,46}
[##.....#.] (1,4,5,6,7,8) (1,2,3,4,5,7,8) (0,2,3,4,6,7,8) (0,1,7) (2,3,4,5,6,7,8) (0,1,6) (0,1,2,3,5,6,7) (1,3,6,8) (0,3,4,7,8) (0,2,3,4) (4,5) {30,38,44,64,47,32,56,48,56}
[..###] (0,3) (0,1,3) (2,3,4) (0,2,4) {33,10,34,31,34}
[##..] (0,2,3) (2,3) (0,1) {131,12,119,119}
[.#.#.##.##] (1,6,8,9) (0,1,3,7,8,9) (0,1,2,4,5,6,8) (0,1,2,3,4,5,6,7) (0,1,2,4,5,6,8,9) (0,3,4,5,6,9) (0,1,2,3,4,6,8,9) (0,1,4,6) (0,1,3,4) (2,7) (0,3,4,5,7,8,9) {58,51,167,45,47,38,47,167,29,36}
[.##.] (0,2) (0,3) (2) (1,2) {8,10,16,3}
[###.] (1) (0,2) (0,3) {21,6,20,1}
[#.#...] (0,1,5) (0,1,4,5) (1,2,3,4,5) (2,4) (0,2) {20,28,38,13,46,28}
[#..#..##] (0,4) (1,2,6) (0,2,6) (1,3,4,5,6,7) (0,2,4,6,7) (0) (4,6,7) (3,4,7) (0,1,2,4,5) {48,190,41,178,218,183,218,200}
[##...] (1,2,4) (0,2,4) (0,4) (2) (0,1,2,3) (0,1,2) (2,3) {50,20,54,9,36}
[##.#] (0,2,3) (0,2) (1,2) {18,11,29,17}
[.#####] (0,2,3,4) (0,4) (0,3,4) (1,2,4,5) {45,12,21,29,57,12}
[##.#] (0,1,2) (0,1,3) {31,31,20,11}
[.#.#...#.] (1,2,3,4,5,6,8) (1) (2,3,7) (0,3) (4,5,6) (0,1,3,8) (0,1,2,4,7) (2,6,7) (1,3,6,7,8) (1,4,5,7) (4,7) {26,219,40,67,209,190,46,235,42}
[...##..#.] (3,6) (2,6) (1,3,4,6,7) (0,2,3,4,5) (2,4,7) (0,2,3,4,6,7,8) (0,2,6) (1,8) (3,7,8) (0,6) {12,28,36,179,25,8,182,25,28}
[.##...] (3,4) (1,2,3,4,5) (0) (2,4,5) (3,4,5) (1,2,3,4) (2) {4,22,27,49,51,39}
[..#.#..] (0,1,2,4,6) (1,6) (0,2,4,5,6) (0,2,3,4,5,6) (1,4,5) (0,3,5,6) {42,32,38,22,45,40,58}
[.#..###] (3,5,6) (1,2,3,6) (0,3,4,5) (0,2,4,5,6) (1,3,4) (0,1,2,3,4,5) (0,1,3) (1,2,3,4,6) (1,6) {38,62,45,88,61,47,49}
[##.#..#.] (0,1,2,5,7) (4,5) (2,4,7) (1,2,3,4,6,7) (5) (0,4,6,7) (0,1,2,5,6,7) (0,2,3,5,7) (0,2,3,5) (1,4) {31,6,39,18,36,46,11,33}
[....#.##] (0,1,2,3,4,5) (0,1,4,7) (3,4,7) (1,2,3,4,6) (4,5,7) (1,3) (0,2,4,6) {26,26,29,26,45,0,29,16}
[##.#] (0,1,2) (0,1,3) {23,23,10,13}
[.####.##] (2,4) (1,2,5) (0,2,7) (1,4,5) (1,2,4,5,7) (0,1,2,3,5,6) (0,1,3,4,6) {22,59,52,21,56,53,21,13}
[#####] (0,2,4) (3,4) (0,3,4) (1,4) {8,11,6,19,36}
[##.......] (0,2,6) (4,6) (5,7) (0,1,2,3,4,5,6) (0,6,7,8) (0,1,2,3,4,6,7) (3,8) (0,1,3,5,7) {54,26,18,38,114,24,142,42,30}
[######..] (0,4,5,6) (0,1,2,3,5) (0,1,2,3,4,6) (0,1,2,4,5,6,7) (1,2,5,6,7) (1,6,7) {40,47,44,26,21,47,38,21}
[#.###] (2,3,4) (2,3) (0,4) (1,2) (1,3) (0) {12,28,23,35,13}
[#.###..##.] (0,5,7,8) (0,2,3,5,6,8,9) (2,3,5,8,9) (2,3,4,7,8) (1,3,4,5,6,7,8,9) (1,2,4,5,6,8) (2,3,4,6,7,8,9) (0,1,2,3,4,5,6) (1,3,4,5,7) (2,3,7,8,9) (0,3,6) {32,188,63,213,189,204,202,179,205,194}
[..#.#.#.#] (0,1,2,5,6,7,8) (0,1,2,3,4,6,7) (1,2,3,6,7,8) (1,8) (0,3,4,6) (2) (2,7) (0,4,5,8) (0,2,3,4,5,6,7) (1,2,3,4,7) (1,2,8) {43,50,42,27,40,23,30,32,48}
[.#....#] (0,5,6) (0,1,2,3,5,6) (2,3,6) (0,2,4,5,6) (0,1,4,5,6) (0,1,3,4,5,6) {43,30,16,31,21,43,50}
[###.#.....] (1,8) (2,5) (0,1,3,4,6,9) (0,1,2,3,5,9) (1,2,3,5,7,8) (3,4) (0,1,2,4,5,8) (0,1,3,4,8) (6,9) (0,1,4,5,6,7,9) (0,1) (1,2,3,5,6,7,8) {52,74,40,56,54,44,42,24,49,37}
[##.#] (0) (1,2) (3) (0,2) (1,3) (0,1) {34,30,7,17}
[####.##] (2,5) (0,1,2,3,5) (1,3,4) (0,2,6) (0,5) (3,5) {37,186,19,192,175,39,6}
[.##.......] (0,1,3,4,5,6,7,8) (0,1,2,3,5,9) (1,6) (2,3,4,6) (3,8) (0,2,3,4,5,6,7,8) (1,4,7,8,9) (2,3,6,7) (4,7,8) (1,3,4,8,9) (0,5,6,7,9) (1,2,5,7,8) {45,67,62,68,59,61,61,93,73,56}
[##.##.##] (1,7) (2,3) (0,1,4,5,6,7) (0,1,2,3,4,5,7) (0,1,2,3,4,5) (4) (1) (2,3,4,5,6) (0,5) (1,2,6) {49,86,82,63,68,62,40,41}
[#####.####] (0,1,2,5,8) (1,2,3,5,7,8,9) (0,1,2,3,6,7) (1,3,5,6) (1,2,3) (0,1,2,3,4,6,7,8,9) (0,2,4,5,6,7,8,9) (1,2,3,4,5,6,7,9) (0,2,4,7,8) (0,1,2,4,5,6,7,9) {68,91,90,64,38,75,71,69,53,50}
[#.#.] (1,3) (0,1,3) (0,3) (2,3) {8,12,109,125}
[####.....] (3,4,5,7) (0,1,2,4,5,7) (2,3,6,7,8) (0,1,5,8) (0,1,2,4,5,6,7) (1,3,8) (1,2,4) (0,2,3,5,6,7,8) (0,1,5,6,7,8) {178,180,64,49,55,195,174,201,168}
[....#] (0,3,4) (0,2,3,4) (1,2,3) (1,2,3,4) (2,3) {15,10,22,36,18}
[.#.#..####] (0,1,3,7,8,9) (0,2,3,4,5,6,8,9) (1,3,4,6,8,9) (0,1,2,4,5,6,7,8) (5,7,8,9) (0,2,3,5,6,7,8,9) (3,4,7) (0,1,2,3,5) (1,9) (4,5,8,9) (0,2,3,4,5,6,7,9) {49,58,32,69,53,49,35,69,60,77}
[.#..#] (0,1,2,3,4) (1,3) (0,2,3) (0,3) {201,30,21,221,10}
[.#.#] (1,2,3) (0,3) (2,3) (0,1) {19,24,23,33}
[##.#] (2) (0,2) (1,2,3) (1,2) (1,3) {8,22,25,13}
[.....##] (0,1,3,5,6) (1,4) (0,2,4,5,6) (0,2,3,6) (0,3,4) {185,27,155,184,18,21,175}
[..##.##..] (0,1,2,3,4,6,8) (5,6,7,8) (2,3) (0,1,2,5,7,8) (0,1,2,5,8) (1,2,3,5,6,7,8) (2,5,8) (0,1,2,3,4,5,6,7) (2,3,4,5,6,8) {24,40,46,35,16,35,35,32,44}
[##.#.#....] (0,2,4,5,6,7,8,9) (0,1,2,3) (5,6) (0,6,8) (4,6) (0,2,3,6,7,8) (1,4,5,8,9) (0,1,2,3,4,5,6,9) (0,1,2,4,5,6,7,8) (1,3,4,5,7) (0,1,5,6,8) (1,2,3,4,5,7,8,9) (1,3,5,6,8,9) {236,237,236,240,74,93,90,61,64,52}
[.#..#.###] (0,2,3,5,8) (1,2,5) (1,2,3,4,7,8) (1,3) (1,2,4,6,7,8) (1,2,3,4,6,8) (2,3,4,5,6,7,8) (3,5,7,8) (0,2,4,8) (0,2,5,6,8) {126,41,170,163,59,143,38,53,186}
[.###] (0,2) (2,3) (1,2,3) (1,2) {10,23,48,25}
[.#.##..#] (0,2,4,7) (2,3,5,6,7) (4,6) (0,1,3,6) (2,6) (3) (0,1,3,4,5,7) (0,7) (0,2,3,4,6) {47,22,169,181,45,157,191,175}
[#..#.#.] (0,1,6) (0,1,5) (0,6) (0,1,3,4,5,6) (0,2,3,4,5) (1,2,3,4) (0,2,3,5,6) (2,3,5) {185,37,41,55,33,46,175}
[..#.##...#] (1,2,3,4,5,6,7,8) (0,2,4,6,8,9) (0,1,2,3,4,5,6,7,9) (2,7) (4,5,6) (0,2,4,5,8) (1,3,4,5,6,8,9) (1,2,3,4,5,6,7) {35,39,205,39,80,77,61,183,28,19}
[...##.] (1,2,3,4) (3,4) (1,2,3,4,5) (1,3) (0,1,2,3) (0,5) (2,4,5) {20,41,41,61,54,47}

View File

@@ -0,0 +1,3 @@
[.##.] (3) (1,3) (2) (2,3) (0,2) (0,1) {3,5,4,7}
[...#.] (0,2,3,4) (2,3) (0,4) (0,1,2) (1,2,3,4) {7,5,12,7,2}
[.###.#] (0,1,2,3,4) (0,3,4) (0,1,2,4,5) (1,2) {10,11,11,5,10,5}

576
2025/inputs/11_1.txt Normal file
View File

@@ -0,0 +1,576 @@
nzm: rdg art kvn ljd nrj
pvs: kmc fxz njx amt
ext: xfz inf kzr
hwq: jpw yjw vkt
ygr: wtu vbc hkc
gly: ujv mtz zcc
bjl: blz pmb
cst: uej kcg
zqw: dta udx fhr slm qsa xsm yif ych wcj hbl xth crj fjy ebp piy snu eyt cpz gqb nwk jjt kfd
tyl: rzk wcc zti jex eqn xbm uqa ceu mgw urj gvj iel zuh
llk: aij
rby: rsc
waa: rae bsg
rcu: art kvn nrj
sev: drf tod
tqj: ydc fzm
eep: xlo poa iqd
xas: lws xdb qbt
cfg: uzb
bcg: jaf zpm oql
zqg: xsg hsq
tqb: vic zle tyl hnh
wgu: doq ekw jyi
ned: kzx lvb tza idx
vtt: gls rvi ppv otq
lky: wfk rpg aij
wcc: pxu zel bth
lqv: njx amt kmc fxz opq
led: hkc yzo wtu vbc
vks: cfy zud
hck: kzx lvb tza
loe: lym
zko: qya
tod: nre fxv
fxv: fkd ekg mmm xba
qjj: hud fkd ekg mmm xba
sjw: you vkz
pnj: hwq mot ydw
ydv: kzt ssj vwa
leu: qbt
ljn: rcf fmw
kuy: tyl hnh ibk vic
ezr: vrk vwa
pfr: vap
zpo: sit sfh twt odd
mlr: kmc fxz
ydw: jpw yjw pha vkt
ttd: bjl hkc
rgn: zud dzj
snu: hvd liz
vbc: pmb mmx
ihv: ibk vic
vgi: idx
rwa: fkd
sud: yzb hky
fhb: jru mrb pps
fsi: byp svo ezv vsa
fkd: roj kvk dio zwl vle nsa oxj wyb
cfy: ffo pvs ytq
nbu: out
lru: ipg imm hrs
ovm: zle hnh
rsk: mlx
ooq: csk
egg: uzb jaf oql qqh
lry: rae
zqx: twb xyk rut
brt: kio cgz
msc: mmm ekg hud fkd
kzx: gcv akw hng
twb: fdf rja sjw
vhs: sxj
fdf: vkz iqd
wew: vgz gls otq
chj: kpx xiw
qeu: dtq xsl rfn
rfn: qey tqb eza fjn
wzr: you poa xlo
ghx: xsf jvu aid qeu
zrm: uej hzq
zuh: kxh vup sir
nqd: mrb tbx pps gka
zih: njx fxz amt opq
ngw: fzc zyv gbx
pcz: kvb
zxv: hng gcv
lsp: cqq pfr ibh
pha: poa vkz iqd you
oea: qbt lws
kme: air
nax: vad kpx xiw
qsa: bcg egg cfg
cat: ewt wew
njx: bat fdj nsw chj wyq fam iqk qgq omu kiv ovi dup
qya: bdb qjj mof
twt: owm
ail: amt njx opq
gtk: out
oul: xdv
ryw: qmg ntj
wqz: wrc ngy
lit: wzr fdf rja sjw
ibk: urj pjr cfs ceu mgw eqn cas uqa xbm rzk ktv zti
rjc: zup rsk
ych: lky cvz ilm
hud: roj xuu ibr iua ybi
tvp: jfy hyh eip qmg ntj
inv: qjj bdb
ykn: tak zto qei
epu: vtc edy rgn
hzb: vee
jpw: poa iqd
urj: ucy gbg pdi ygy bjo
ybi: awi
vkz: fmf waa dcd eje gly ihh
pps: ehx
qbt: kmc amt
iua: isx trq res shq
iel: bth eth
imj: mmm fkd ekg
ipg: iew ypy
fzm: vua
piy: ned
nre: mmm ekg hud
kvk: dac hky
nrj: out
thp: hnh tyl ibk zle vic
iqd: wjs fpr hzb fmf lry dot waa eje lzu mgf
ljd: out
zle: jex cas eqn uqa yla rzk ktv wcc zti pjr urj gvj iel zuh rle ceu mgw oha
zel: wmu ijr
lzu: rae
pgl: xlo you vkz poa
bjt: eip
foo: pqh vfu drf
ngy: jac wvw
tnb: tor ooq pyq gai
iew: leu whw xas oea
zwg: wrc ngy etz
rzk: kxh cnw mjp sir
fxz: qgq brt huy gav wyq iqk fam omu kiv ovi kmq nax dup bat muk fdj nsw
wmu: bkk
cpz: ygr
ucs: vkz you
jla: uuf thp
jaf: akw hng gcv
xoj: vic tyl zle
cqq: dlp vap
ffo: opq kmc amt fxz
urv: vap dlp qwf
zfn: dac
oyv: vic zle tyl
rbm: pvh gwk jrh
xlx: rvi
icb: eep yby
vub: njx opq
qwf: gcv akw hng
esc: fmw
tix: fxz amt
wyb: hky
oql: hng akw
yla: nkv hgb equ
zpm: hng gcv
xba: utf kvh ajc sud zov zwl ybi oxj loe wyb dio nsa uvr vle
dfp: etz wrc baq
vap: hng
rja: vkz iqd poa you xlo
bsg: fog dpl bip
sfu: gbx tua zyv
dzz: vua tnb gzy
hvd: nmx
muk: bjt tvp ryw dyt
ckt: vkz iqd poa
uuf: ibk zle hnh tyl vic
air: oyv
slm: ktn hvd liz
tqf: onm ius msc
rae: bip
roj: zqx ojs oyj qph
eqn: tqf pty guo
kzr: ail tix
ydc: gzy tnb
iqk: qic ote rbm
xsl: tqb fjn uwy eza
qph: xyk lit
shq: zza mnm zbd ucs
kcg: out
pqh: rrp
xuu: res
qfl: hsq ifm xsg tab
gai: oqt azy
vua: hjl pyq
rut: rja
jex: bjo
bws: qjj
fog: fgo ykr fhb gda
hqe: iew dlk ypy
utf: lym
qqh: hng akw
gbg: sev spq foo
ktv: sir kxh vup cnw mjp
nfn: gcv hng akw
qei: ngw
hrs: iew
whw: qbt xdb
rdg: out
pmb: gcv akw hng
gcv: ssm nli rhl tuj zfe kvs tgh zqg big lru twn glg ykn qfl jts dyy
otq: xba mmm
spq: pqh tod
gzy: gai ooq hjl
jvu: dtq rfn
sfd: uri lkc
isx: ucs mnm zza zbd
vbg: nbu viv
xem: cmi edy
ifd: dzz rsc fzm
kmq: rdt
tgf: jyi
alt: poa vkz you
gbx: qzi mlr qrq fyo
pkw: uqr lsp
uri: ibh pfr urv
ucy: sev spq
dhh: zle hnh tyl vic
pty: msc ius kdz onm
fam: joh
kzt: nzm
ifm: sxj ext
ijr: rwa hal bkk
tak: fft
onm: fkd ekg
eje: rby tqj app
nsa: res shq trq
xyk: wzr fdf sjw
qrq: amt
ykr: pps gka mrb jru
uwy: vic zle tyl hnh
ygy: yhs spq
xsf: rfn dtq xsl
lvv: uuf thp
ceu: zel
vee: ydv xgp
lws: opq fxz njx kmc
tbg: bws inv
fee: kmc fxz njx
mtz: ezr zfy
huy: tvp dyt
ibr: fsi urt awi
rfr: sjw
ojs: rut rfr
twn: imm hqe hrs
yjw: xlo vkz poa
vft: kzt ssj eha
baq: wvw jac yoy
fyo: amt kmc fxz
urt: svo byp vsa
sbp: hng
kiv: wec kme
sir: rqx cat zgj pws
bat: ghx
pws: syu vtt xlx
gwk: zne jla lvv gpg
lvb: hng gcv
svr: zqw ino ugt
doq: fqp ljn nrr
jyi: esc nrr
gzj: xfz
hgb: zko
tua: pjd mlr qrq fyo
ppv: hud fkd xba
bwi: epu xem
ytq: amt kmc opq
aij: akw
bfr: xem nnd
kvs: tab
rle: pty
ehx: out
dio: awi urt fsi
crj: hck vgi ned
qth: ekg fkd xba mmm
xsg: ext
zgj: vtt wew syu
hkc: mmx blz
wqi: gcv akw
ujv: vft
owm: njx fxz amt
ewt: otq rvi gls
ekw: esc ljn nrr
zti: guo
xsr: uej
cas: eth
ymz: biy
kvn: out
fmw: nbu xdv
idx: gcv hng
xbm: zda hgb nkv
mot: pha jpw
gka: biw gtk
hky: pgl olf
pyq: oqt
bth: ijr
dgr: vtc rgn
pdi: yhs spq
uvr: hky dac
rdf: out
mgf: tqj rby
cnw: rqx zgj cat
zbd: iqd xlo
chp: tyl zle
cdw: ngw sfu fft
vrk: jyh rcu
mlx: vub
tuj: dgr xem nnd epu
jrh: gpg lvv
gvj: brb zel
azy: out
qzi: fxz amt njx opq
jjt: led ttd
xjo: mot ydw
yby: xlo you iqd vkz
amt: brt huy gav
fhr: vgi ned
bjo: yhs ria
cvz: rpg pdn wqi
dta: uba led rpo
uqr: ibh pfr urv cqq
rpr: ibk
rqx: vtt syu ewt
imm: iew
bkk: hud ekg
hbl: ktn liz
jru: rdf
xdb: opq
jac: zrm txj cst xsr
hyh: ovm dhh
awi: svo aoq ezv
eyt: pkw sfd zhj
eha: nzm
oyj: rut xyk lit twb rfr
syu: otq ppv rvi
ktn: dfy xll sbp nfn nmx
cjv: xoj kuy oyv rpr
zov: zqx ojs oyj qph
nrr: oul vbg fmw
rpg: hng
svo: afw
dfy: akw
tza: akw hng
wjs: dfp wqz zwg
qgq: bjt
wnc: hwq mot ydw
nkv: tbg agm zko
nhc: jvu xsf aid
oha: zda kzk equ
ria: drf tod
eza: vic
xfz: lqv
dfb: wgu fml
agm: bws qya flm
cgz: air phg
bdb: fkd
nnd: edy rgn vks cmi
gda: tbx jru gka pps
omu: kpx
blz: akw gcv
dur: zpo rsk
chb: dfp
dup: nhc joh
ibh: zxv
vwa: jyh nzm rcu
wec: phg air cjv
fzc: fyo qzi pjd mlr
uqa: ucy pdi ygy bjo
tab: ext gzj ypl
ajc: ojs oyj qph
hdi: tyl zle ibk
mgw: ygy bjo gbg
lsx: you poa vkz
zhj: lsp uri lkc
dyy: hqe imm
vup: pws
ius: mmm xba
rrp: hud fkd xba
hal: fkd ekg mmm xba
vad: lwp
poa: dcd dot fmf waa chb lzu gly kpb ihh fpr wra gmr ejc
dyt: hyh
zcc: xgp ydv zfy
ujp: tyl vic
oxj: tsp lym
pjr: vup
txj: uej kcg hzq
rlv: fog dpl bip
pxf: tsp
sxj: kzr
tor: oqt
qmg: hdi ovm ihv
cfs: cnw vup mjp sir
yoy: zrm cst txj
pvh: gpg lvv jla zne
qic: pvh gwk pcz jrh
wra: fml tgf
wia: pvh pcz
wvw: xsr cst
phg: kuy rpr
udx: bcg
nwk: rpo led ttd uba
afw: lsx yby
eth: nkl ijr wmu
xlo: ktj dfb waa fmf wjs dcd gmr
zup: sit odd mlx twt
uba: wtu bjl vbc yzo
gqb: led uba ttd
odd: fee
res: ckt
ypl: inf
ypy: sjh whw
tsp: pnj wnc xjo
dlp: gcv
dlk: leu xas whw
nsw: rdt ote wia rbm
vsa: afw pdf icb
dtq: uwy eza qey tqb
pdn: akw gcv
ihh: wgu tgf
drf: imj
eiw: ydc dzz
hnh: mgw cfs ceu oha urj pjr wcc rzk yla cas eqn xbm
ugt: dta crj ebp fhr udx eyt yif ych cpz wcj gqb hbl xth nwk jjt kfd
vic: zuh zti rle jex yla ceu ktv iel
fjy: ilm
trq: zza mnm
ssm: epu
kfd: egg zcd cfg
fml: doq jyi
edy: cfy
zza: poa iqd vkz you
jyh: rdg ljd kvn nrj
xsm: llk lky
hjl: oqt csk azy
mnm: you
brb: ijr nkl
aoq: afw pdf icb
jkz: vic tyl zle ibk
zto: sfu fft
mmx: hng akw gcv
fdj: cgz kio wec
rvi: hud
hng: qrc glg bwi dyy kvs cuh big ssm nli
kvh: ojs oyj
kmc: wyq huy kiv fam fdj
big: biy dur rjc
lym: xjo wnc
vkt: xlo you vkz iqd
oqt: out
you: kpb ihh mgf gly eje chb lry dfb ejc wjs fpr
zfy: kzt eha
eip: ovm ujp
yif: cfg egg zcd bcg
zwl: qph oyj
pdf: eep lsx
xuw: njx kmc fxz
nkl: rwa hal
pvf: wnc
equ: tbg zko
jts: dgr
nli: imm hqe
ovi: ghx joh
ati: out
sit: vub
ndr: shq res isx
kvb: uuf jkz
xgp: kzt ssj eha vwa
nmx: gcv akw
ino: ebp nwk fhr slm snu eyt ych wcj dta gqb
kpb: wqz dfp
app: fzm dzz
sfh: fee vub
xll: hng
vtc: dzj
liz: dfy xll sbp nfn nmx
kxh: rqx cat
gav: dyt ryw bjt
mrb: gtk ati biw
ilm: wqi
ote: gwk pvh
dac: pgl alt
ejc: mtz ujv zcc
biw: out
glg: biy dur rjc
bip: fhb gda ykr
flm: mof qjj qth bdb
wrc: jac
kzk: tbg
qey: ibk
xiw: lwp nuc kgu chp
guo: ius
yzo: pmb
fft: tua zyv fzc
kgu: zle
gpg: jkz thp
xdv: out
zfe: rjc biy
jnc: ifm hsq xsg
biy: zup rsk zpo
vle: lym pvf
dzj: xuw zih ytq pvs
rhl: cdw zto
akw: kvs tgh bfr zqg nli jnc ssm tuj rhl zfe cuh qfl dyy bwi ykn qrc big ymz lru twn
yzb: alt
hzq: out
rsc: gzy tnb vua
ebp: bcg cfg
dot: rlv bsg rae
nuc: vic
mmm: wyb loe nsa vle ybi iua ndr sud zov zfn pxf roj xuu kvh utf
tgh: vhs tab xsg
wfk: akw gcv
byp: afw pdf icb
inf: ail lqv
dcd: vee zcc
etz: yoy
aid: xsl
mof: ekg fkd mmm
kio: cjv phg
sjh: lws
mjp: rqx zgj cat
jfy: hdi ovm ihv
ssj: nzm
kdz: fkd mmm
art: out
gls: fkd hud xba
opq: nsw qgq iqk chj
kpx: chp nuc
uzb: hng gcv
vfu: rrp nre imj fxv
cmi: cfy zud
wyq: nhc ghx joh
csk: out
vgz: ekg mmm xba
wtu: mmx
hsq: ypl ext gzj
ekg: ybi oxj vle roj kvh ajc sud kvk zfn zwl pxf
fjn: tyl zle ibk vic
lkc: pfr urv cqq
fqp: rcf vbg
cuh: rjc
zcd: uzb jaf zpm qqh
fpr: rby ifd eiw app
zud: pvs ffo xuw
uej: out
ktj: tqj eiw rby
rpo: yzo hkc vbc wtu
lwp: tyl hnh ibk vic
fgo: pps jru
gmr: rae bsg rlv
zyv: pjd qrq
ezv: pdf
ntj: dhh ujp ovm hdi ihv
rcf: xdv nbu
joh: xsf aid
viv: out
pjd: opq fxz kmc njx
zda: agm tbg
zne: jkz uuf
yhs: vfu drf tod pqh
xth: zhj sfd pkw
qrc: cdw
wcj: zhj
dpl: fgo nqd gda
olf: you iqd xlo
fmf: wqz dfp
rdt: gwk
pxu: nkl
tbx: ati ehx biw rdf gtk

View File

@@ -0,0 +1,10 @@
aaa: you hhh
you: bbb ccc
bbb: ddd eee
ccc: ddd eee fff
ddd: ggg
eee: out
fff: out
ggg: out
hhh: ccc fff iii
iii: out

View File

@@ -0,0 +1,4 @@
# Advent of Code
## Running
`cargo +nightly -Zscript XX.rs`