From 574cbb70925b2218f590eada5ac85e7d4aa2f98b Mon Sep 17 00:00:00 2001 From: Russell Champoux Date: Wed, 11 Dec 2024 22:08:19 +0000 Subject: [PATCH] day 11 pt 1 broken --- data/examples/11.txt | 1 + src/bin/11.rs | 57 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 data/examples/11.txt create mode 100644 src/bin/11.rs diff --git a/data/examples/11.txt b/data/examples/11.txt new file mode 100644 index 0000000..9990375 --- /dev/null +++ b/data/examples/11.txt @@ -0,0 +1 @@ +0 1 10 99 999 diff --git a/src/bin/11.rs b/src/bin/11.rs new file mode 100644 index 0000000..d6f1ed4 --- /dev/null +++ b/src/bin/11.rs @@ -0,0 +1,57 @@ +use std::ops::{Div, Mul}; + +use itertools::Itertools; + +advent_of_code::solution!(11); + +pub fn part_one(input: &str) -> Option { + let mut stones = input.strip_suffix("\n")?.split(" ").collect_vec(); + + for step in 0..25 { + println!("STEP {step}: {:?}", stones); + // stones.clone_from(&process_stones(stones).iter().map(|s| s as &str).collect_vec()); + // stones = next_step.clone().iter().map(|s| s as &str).collect_vec(); + for idx in (0..stones.len()).rev() { + let stone = stones[idx]; + let stone_length = stone.len(); + if stone == "0" { + stones[idx] = "1"; + } else if stone_length % 2 == 0 { + let stone_iter = stone.chars().into_iter(); + // THIS IS BROKEN AND I"M VERY SAD + let first_half = stone_iter.by_ref().take(stone_length/2).collect::().as_str(); + + let second_half = stone.chars().into_iter().skip(stone_length/2).take(stone_length/2).collect::().as_str(); + stones[idx] = first_half; + stones.insert(idx + 1, second_half); + } else { + stones[idx] = stone.parse::().unwrap().mul(2024).to_string().as_str(); + } + } + } + + println!("FINAL STONES: {:?}", stones); + None +} + +pub fn part_two(input: &str) -> Option { + None +} + + +#[cfg(test)] +mod tests { + use super::*; + + #[test] + fn test_part_one() { + let result = part_one(&advent_of_code::template::read_file("examples", DAY)); + assert_eq!(result, Some(55312)); + } + + #[test] + fn test_part_two() { + let result = part_two(&advent_of_code::template::read_file("examples", DAY)); + assert_eq!(result, None); + } +}