fixed day 10

This commit is contained in:
timeshifter
2026-06-22 15:00:50 +02:00
parent 9adb5887bb
commit 5d7caa5a84
+21 -36
View File
@@ -1,5 +1,3 @@
use std::collections::HashMap;
fn main() { fn main() {
let input = "3113322113"; let input = "3113322113";
@@ -9,38 +7,36 @@ fn main() {
fn part1(input: &str) { fn part1(input: &str) {
let mut input: Vec<_> = input.to_string().chars().collect(); let mut input: Vec<_> = input.to_string().chars().collect();
for _ in 0..34 { for _ in 0..50 {
input = recurse(input); input = solve(input);
} }
for c in input { println!("{}", input.len());
print!("{c}");
}
println!();
} }
fn recurse(input: Vec<char>) -> Vec<char> { fn solve(input: Vec<char>) -> Vec<char> {
if input.is_empty() { let mut result = vec![];
return input;
}
let mut iter = input.iter(); let mut s = 0;
let first_digit = *iter.next().unwrap(); let mut e = 1;
let s = 0; while let Some(first_digit) = input.get(s) {
let mut e = 0; while let Some(next_digit) = input.get(e) {
if first_digit == next_digit {
e += 1;
} else {
break;
}
}
for next_digit in iter { result.append(&mut look_and_say(&input[s..e]));
if first_digit == *next_digit {
e += 1 s = e;
} else {
if e == input.len() {
break; break;
} }
} }
let mut result = look_and_say(&input[s..=e]);
result.append(&mut recurse(input[e + 1..].to_vec()));
result result
} }
@@ -64,7 +60,7 @@ fn look_and_say(s: &[char]) -> Vec<char> {
#[cfg(test)] #[cfg(test)]
mod test { mod test {
use crate::{look_and_say, recurse}; use crate::look_and_say;
#[test] #[test]
fn basic() { fn basic() {
@@ -80,17 +76,6 @@ mod test {
let result = look_and_say(&x); let result = look_and_say(&x);
assert_eq!(result, vec!['1', '2']); 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 // https://adventofcode.com/2015/day/10