1
0
Files
AdventOfCode2025/src/solvers/trash_compactor.rs
T
Stefan Müller d28f2ff79e Update formatting
2026-01-26 21:58:01 +01:00

39 lines
1.2 KiB
Rust

use crate::solvers::Solver;
use grid::*;
use std::io::BufRead;
pub struct TrashCompactor {}
impl TrashCompactor {
const NUMBER_SPLIT_CHAR: char = ' ';
}
impl Solver for TrashCompactor {
const PUZZLE_INDEX: u8 = 6;
const PUZZLE_NAME: &'static str = "Trash Compactor";
fn process_data<R: BufRead>(&self, reader: R) -> (u64, u64) {
let mut part1 = 0;
let mut grid = Grid::new(0, 0);
for line in reader.lines().map_while(Result::ok) {
let v: Vec<&str> = line
.split(Self::NUMBER_SPLIT_CHAR)
.filter(|s| !s.is_empty())
.collect();
match v[0].parse::<u32>() {
Ok(_) => grid.push_row(v.iter().map(|n| n.parse::<u64>().unwrap()).collect()),
Err(_) => {
for (i, sign) in v.iter().enumerate() {
if *sign == "+" {
part1 += grid.iter_col(i).sum::<u64>();
} else {
part1 += grid.iter_col(i).product::<u64>();
}
}
}
}
}
(part1, 0)
}
}