From 97d8acbad8a07f3351f09ae3e455571329eecf72 Mon Sep 17 00:00:00 2001 From: Andrew Glaze Date: Thu, 14 Dec 2023 14:31:43 -0500 Subject: [PATCH] day14 part1 --- src/day14.rs | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++++ src/lib.rs | 1 + 2 files changed, 90 insertions(+) create mode 100644 src/day14.rs diff --git a/src/day14.rs b/src/day14.rs new file mode 100644 index 0000000..b994dac --- /dev/null +++ b/src/day14.rs @@ -0,0 +1,89 @@ +use aoc_runner_derive::{aoc, aoc_generator}; + +#[derive(Debug)] +enum Rock { + Round, + Square, + None +} +trait RockConvertable { + fn to_rock(&self) -> Rock; +} + +impl RockConvertable for char { + fn to_rock(&self) -> Rock { + match self { + 'O' => Rock::Round, + '#' => Rock::Square, + '.' => Rock::None, + _ => panic!("Invalid rock char") + } + } +} + +#[aoc_generator(day14)] +fn parse(input: &str) -> Vec> { + let input: Vec> = input.lines() + .map(|line| { + line.chars().map(|char| { + char.to_rock() + }).collect::>() + }).collect::>(); + input +} + +#[aoc(day14, part1)] +fn part1(input: &Vec>) -> usize { + let mut load: usize = 0; + for j in 0..input[0].len() { + let mut cur_weight = input[0].len() + 1; + + for i in 0..input.len() { + match input[i][j] { + Rock::Round => { + cur_weight -= 1; + load += cur_weight; + //println!("{}", cur_weight); + }, + Rock::Square => { + //println!("{}", input[0].len() - i); + cur_weight = input[0].len() - i; + }, + Rock::None => continue + } + } + } + load +} + +// #[aoc(day14, part2)] +// fn part2(input: &Vec>) -> String { +// todo!() +// } + + +#[cfg(test)] +mod tests { + use super::*; + + const EX: &str = r"O....#.... +O.OO#....# +.....##... +OO.#O....O +.O.....O#. +O.#..O.#.# +..O..#O..O +.......O.. +#....###.. +#OO..#...."; + + #[test] + fn part1_example() { + assert_eq!(part1(&parse(EX)), 136); + } + + // #[test] + // fn part2_example() { + // assert_eq!(part2(&parse(EX)), ""); + // } +} \ No newline at end of file diff --git a/src/lib.rs b/src/lib.rs index c5b3971..99df8a3 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,3 +1,4 @@ +mod day14; mod day13; mod day12; mod day4;