diff --git a/src/solutions/day04.rs b/src/solutions/day04.rs index 26b5ef3..58c58e0 100644 --- a/src/solutions/day04.rs +++ b/src/solutions/day04.rs @@ -1,4 +1,4 @@ -use std::{borrow::BorrowMut, collections::HashMap}; +use std::{borrow::BorrowMut, collections::HashMap, fs::copy, vec}; use super::Solution; @@ -37,20 +37,23 @@ impl Solution for Day04 { .enumerate() .collect(); - for card in cards {} - // for (i, card) in cards.iter() { - // let winning_nums = self.get_count_winning_numbers(card)?; - // if winning_nums == 0 { - // continue; - // } - // for c in cards.clone()[(i + 1)..=(i + 1 + winning_nums)].iter() { - // cards.push(c.clone()); - // } - // } - // for i in cards.clone() { - // println!("{:?}", i); - // } - Ok(Box::new(cards.len())) + let mut copy_counts: Vec = vec![1; cards.len()]; + + for (i, card) in cards.iter() { + // Create a container for the cards + + // Check if we are looking at a winning card + let winning_nums = self.get_count_winning_numbers(card)?; + if winning_nums == 0 { continue; } + + // We have a winning card... add the next cards resulting * num of current card + for j in 0..winning_nums { + // Don't let us add cards that aren't available + copy_counts[*i + j + 1] += copy_counts[*i]; + } + } + + Ok(Box::new(copy_counts.iter().sum::())) } fn get_day(&self) -> u8 {