From 6f2e04608042f3284c657cf0c3faba668b02ccef Mon Sep 17 00:00:00 2001 From: Johannes Schaefer Date: Mon, 17 Dec 2018 17:45:35 +0100 Subject: [PATCH] day14 both parts --- src/main.rs | 4 ++-- src/tasks/day14.rs | 55 ++++++++++++++++++++++++++++++++++++++++++++++ src/tasks/mod.rs | 1 + 3 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 src/tasks/day14.rs diff --git a/src/main.rs b/src/main.rs index 69a5650..3a2692b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,4 @@ fn main() { - aoc_2018::tasks::day13::task1(); - // aoc_2018::tasks::day09::task2(); + // aoc_2018::tasks::day14::task1(); + aoc_2018::tasks::day14::task2(); } diff --git a/src/tasks/day14.rs b/src/tasks/day14.rs new file mode 100644 index 0000000..9d21171 --- /dev/null +++ b/src/tasks/day14.rs @@ -0,0 +1,55 @@ +pub fn task1() { + let input: usize = 509671; + + let mut scores = vec![3, 7]; + let mut recipes = vec![0, 1]; + + while scores.len() < input + 10 { + let mut score: usize = recipes.iter().map(|recipe| scores[*recipe]).sum(); + if score >= 10 { + scores.push(1); + score -= 10; + } + scores.push(score); + + for recipe in recipes.iter_mut() { + *recipe = (*recipe + 1 + scores[*recipe]) % scores.len(); + } + } + + let result = scores[input..input + 10] + .iter() + .map(|s| s.to_string()) + .collect::(); + println!("Last 10 for {}: {}", input, result); +} + +pub fn task2() { + let input = vec![5, 0, 9, 6, 7, 1]; + + let mut scores = vec![3, 7]; + let mut recipes = vec![0, 1]; + + while scores.len() < 7 + || scores[scores.len() - 6..] != input[..] + && scores[scores.len() - 7..scores.len() - 1] != input[..] + { + let mut score: usize = recipes.iter().map(|recipe| scores[*recipe]).sum(); + if score >= 10 { + scores.push(1); + score -= 10; + } + scores.push(score); + + for recipe in recipes.iter_mut() { + *recipe = (*recipe + 1 + scores[*recipe]) % scores.len(); + } + } + + if scores[scores.len() - 6..] != input[..] { + println!("{}", scores.len() - 7) + } else { + println!("{}", scores.len() - 8) + } + // 20227890 too high +} diff --git a/src/tasks/mod.rs b/src/tasks/mod.rs index ccfd34c..f4877db 100644 --- a/src/tasks/mod.rs +++ b/src/tasks/mod.rs @@ -11,3 +11,4 @@ pub mod day10; pub mod day11; pub mod day12; pub mod day13; +pub mod day14;