fixed day 10
This commit is contained in:
+21
-36
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user