diff --git a/AoC_2025/src/days/day03.rs b/AoC_2025/src/days/day03.rs deleted file mode 100644 index 5bdce68..0000000 --- a/AoC_2025/src/days/day03.rs +++ /dev/null @@ -1,53 +0,0 @@ -use crate::days::Solution; - -pub struct Day03; - -impl Solution for Day03 { - type Input = Vec>; - - fn parse(&self, data: &str) -> Self::Input { - data.split("\n") - .filter(|s| !s.is_empty()) - .map(|s| s.chars().map(|c| c.to_digit(10).unwrap_or(0)).collect()) - .collect() - } - - fn part1(&self, input: &Self::Input) -> usize { - input - .iter() - .map(|l| { - let (i1, m1) = max(&l[..l.len() - 1]); - let (_, m2) = max(&l[i1 + 1..]); - 10 * m1 + m2 - }) - .sum::() as usize - } - - fn part2(&self, input: &Self::Input) -> usize { - println!("Part2"); - input - .iter() - .map(|l| { - (0..12) - .rfold((0, 0), |(start_index, joltage), n| { - let (i, m) = max(&l[start_index..l.len() - n]); - ( - start_index + i + 1, - usize::pow(10, n as u32) * m as usize + joltage, - ) - }) - .1 - }) - .sum() - } -} - -fn max(l: &[u32]) -> (usize, u32) { - let x = l.iter().enumerate().fold( - (0, 0), - |(index_m, m), (i, &x)| if x > m { (i, x) } else { (index_m, m) }, - ); - - println!("Max of {:?} is {:?}", l, x); - x -} diff --git a/AoC_2025/src/days/day04.rs b/AoC_2025/src/days/day04.rs deleted file mode 100644 index 9d60026..0000000 --- a/AoC_2025/src/days/day04.rs +++ /dev/null @@ -1,66 +0,0 @@ -use crate::days::Solution; -use std::cmp::{max, min}; - -pub struct Day04; - -impl Solution for Day04 { - type Input = Vec>; - - fn parse(&self, data: &str) -> Self::Input { - data.split("\n") - .filter(|s| !s.is_empty()) - .map(|s| s.chars().map(|c| c == '@').collect()) - .collect() - } - - fn part1(&self, input: &Self::Input) -> usize { - input - .iter() - .enumerate() - .map(|(x, l)| { - l.iter() - .enumerate() - .filter(move |(y, v)| { - **v && neighbors((x, *y), input.len()) - .iter() - .filter(|(nx, ny)| input[*nx][*ny]) - .count() - < 4 - }) - .count() - }) - .sum() - } - - fn part2(&self, input: &Self::Input) -> usize { - 0 - } -} - -fn coord_in_range((x, y): (i32, i32), size: usize) -> (usize, usize) { - ( - min(max(x, 0) as usize, size - 1), - min(max(y, 0) as usize, size - 1), - ) -} - -fn neighbors((x, y): (usize, usize), size: usize) -> Vec<(usize, usize)> { - (0..=2) - .map(|i| i as i32 - 1) - .flat_map(|dx| { - (0..=2) - .map(|i| i as i32 - 1) - .filter_map(|dy| { - if dx != 0 || dy != 0 { - Some(coord_in_range((x as i32 + dx, y as i32 + dy), size)) - } else { - None - } - }) - .filter(|n| *n != (x, y)) - .collect::>() - }) - .collect::>() - .into_iter() - .collect::>() -} diff --git a/AoC_2025/src/days/mod.rs b/AoC_2025/src/days/mod.rs index 0d5fd87..d16c304 100644 --- a/AoC_2025/src/days/mod.rs +++ b/AoC_2025/src/days/mod.rs @@ -1,7 +1,5 @@ pub mod day01; pub mod day02; -pub mod day03; -pub mod day04; pub trait Solution { type Input; diff --git a/AoC_2025/src/main.rs b/AoC_2025/src/main.rs index 3c957b5..f8c8e10 100644 --- a/AoC_2025/src/main.rs +++ b/AoC_2025/src/main.rs @@ -35,8 +35,6 @@ fn main() { match cli.day { 1 => run(cli.day, days::day01::Day01), 2 => run(cli.day, days::day02::Day02), - 3 => run(cli.day, days::day03::Day03), - 4 => run(cli.day, days::day04::Day04), _ => { eprintln!("Day {:02} is not implemented yet!", cli.day); process::exit(1);