diff --git a/2021/src/day4.rs b/2021/src/day4.rs index debb702..313e034 100644 --- a/2021/src/day4.rs +++ b/2021/src/day4.rs @@ -191,8 +191,21 @@ fn part1(boards: &[Board]) -> eyre::Result { } +fn part2(boards: &[Board]) -> eyre::Result { + let winner = boards.iter() + .filter(|b| b.bingo_time.is_some()) + .max_by_key(|b| b.bingo_time.unwrap()); + + match winner { + Some(w) => Ok(*w), + None => Err(eyre!("Could not find a winning board")), + } +} + + pub fn run(data: &str) -> eyre::Result<(isize, isize)> { let boards = load(data)?; let winner = part1(&boards)?; - Ok((winner.score()?, 0)) + let loser = part2(&boards)?; + Ok((winner.score()?, loser.score()?)) }