fixed day 10

This commit is contained in:
timeshifter
2026-06-22 15:00:50 +02:00
parent 9adb5887bb
commit 5d7caa5a84
+19 -34
View File
@@ -1,5 +1,3 @@
use std::collections::HashMap;
fn main() {
let input = "3113322113";
@@ -9,37 +7,35 @@ 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<char>) -> Vec<char> {
if input.is_empty() {
return input;
}
fn solve(input: Vec<char>) -> Vec<char> {
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;
for next_digit in iter {
if first_digit == *next_digit {
e += 1
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;
}
}
let mut result = look_and_say(&input[s..=e]);
result.append(&mut look_and_say(&input[s..e]));
result.append(&mut recurse(input[e + 1..].to_vec()));
s = e;
if e == input.len() {
break;
}
}
result
}
@@ -64,7 +60,7 @@ fn look_and_say(s: &[char]) -> Vec<char> {
#[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