From 5d7caa5a8434ae8084b4b8fd50c712a463254b6a Mon Sep 17 00:00:00 2001 From: timeshifter Date: Mon, 22 Jun 2026 15:00:50 +0200 Subject: [PATCH] fixed day 10 --- day10/src/main.rs | 57 +++++++++++++++++------------------------------ 1 file changed, 21 insertions(+), 36 deletions(-) diff --git a/day10/src/main.rs b/day10/src/main.rs index 8fd061f..a6b7429 100644 --- a/day10/src/main.rs +++ b/day10/src/main.rs @@ -1,5 +1,3 @@ -use std::collections::HashMap; - fn main() { let input = "3113322113"; @@ -9,38 +7,36 @@ fn main() { fn part1(input: &str) { let mut input: Vec<_> = input.to_string().chars().collect(); - for _ in 0..34 { - input = recurse(input); + for _ in 0..50 { + input = solve(input); } - for c in input { - print!("{c}"); - } - println!(); + println!("{}", input.len()); } -fn recurse(input: Vec) -> Vec { - if input.is_empty() { - return input; - } +fn solve(input: Vec) -> Vec { + let mut result = vec![]; - let mut iter = input.iter(); - let first_digit = *iter.next().unwrap(); + let mut s = 0; + let mut e = 1; - let s = 0; - let mut e = 0; + while let Some(first_digit) = input.get(s) { + while let Some(next_digit) = input.get(e) { + if first_digit == next_digit { + e += 1; + } else { + break; + } + } - for next_digit in iter { - if first_digit == *next_digit { - e += 1 - } else { + result.append(&mut look_and_say(&input[s..e])); + + s = e; + + if e == input.len() { break; } } - let mut result = look_and_say(&input[s..=e]); - - result.append(&mut recurse(input[e + 1..].to_vec())); - result } @@ -64,7 +60,7 @@ fn look_and_say(s: &[char]) -> Vec { #[cfg(test)] mod test { - use crate::{look_and_say, recurse}; + use crate::look_and_say; #[test] fn basic() { @@ -80,17 +76,6 @@ mod test { let result = look_and_say(&x); assert_eq!(result, vec!['1', '2']); } - - #[test] - fn test_recurse() { - // let x = vec!['1']; - // let result = recurse(x); - // assert_eq!(result, vec!['1', '1']); - - let result = vec!['1', '1', '1', '2', '2', '1']; - let result = recurse(result); - assert_eq!(result, vec!['3', '1', '2', '2', '1', '1']); - } } // https://adventofcode.com/2015/day/10