From 03c7d0a04c85c2f0713f5622af5f846fe0821283 Mon Sep 17 00:00:00 2001 From: Maciej Jur Date: Fri, 23 Dec 2022 17:12:57 +0100 Subject: [PATCH] 2022 day 23 parsing --- 2022/rust/src/main.rs | 3 +- 2022/rust/src/solutions/day23.rs | 61 ++++++++++++++++++++++++++++++++ 2022/rust/src/solutions/mod.rs | 1 + 3 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 2022/rust/src/solutions/day23.rs diff --git a/2022/rust/src/main.rs b/2022/rust/src/main.rs index 48d3c80..46b2b13 100644 --- a/2022/rust/src/main.rs +++ b/2022/rust/src/main.rs @@ -24,5 +24,6 @@ fn main() { // solutions::day19::run(); // solutions::day20::run(); // solutions::day21::run(); - solutions::day22::run(); + // solutions::day22::run(); + solutions::day23::run(); } diff --git a/2022/rust/src/solutions/day23.rs b/2022/rust/src/solutions/day23.rs new file mode 100644 index 0000000..e578ec0 --- /dev/null +++ b/2022/rust/src/solutions/day23.rs @@ -0,0 +1,61 @@ +use std::collections::HashSet; +use crate::utils; + + +pub fn run() -> () { + let data = parse_data(&utils::read_lines(utils::Source::Day(23))); + + println!("Day 23"); + println!("Part 1: {}", solve1(&data)); + println!("Part 2: {}", solve2(&data)); +} + + +type Location = (isize, isize); + + +fn solve1(data: &HashSet) -> i32 { + println!("{:?}", data); + 1 +} + +fn solve2(data: &HashSet) -> i32 { + 2 +} + + +fn parse_data>(data: &[T]) -> HashSet { + data.iter() + .enumerate() + .flat_map(|(row, line)| line.as_ref() + .char_indices() + .filter(|&(_, c)| c == '#') + .map(move |(col, _)| (row as isize, col as isize)) + ) + .collect() +} + + +#[cfg(test)] +mod tests { + use super::*; + + static DATA: &[&str] = &[ + ".....", + "..##.", + "..#..", + ".....", + "..##.", + ".....", + ]; + + #[test] + fn part1() { + assert_eq!(1, solve1(&parse_data(DATA))); + } + + #[test] + fn part2() { + assert_eq!(2, solve2(&parse_data(DATA))); + } +} diff --git a/2022/rust/src/solutions/mod.rs b/2022/rust/src/solutions/mod.rs index f396660..5d00381 100644 --- a/2022/rust/src/solutions/mod.rs +++ b/2022/rust/src/solutions/mod.rs @@ -20,3 +20,4 @@ pub mod day19; pub mod day20; pub mod day21; pub mod day22; +pub mod day23;