From fb8ec8168333b0d724ee2b12bcfffb38d30304b5 Mon Sep 17 00:00:00 2001 From: Joseph Montanaro Date: Tue, 7 Dec 2021 06:04:53 -0800 Subject: [PATCH] fix day 4 --- 2021/src/day4.rs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/2021/src/day4.rs b/2021/src/day4.rs index 154b33d..bf24d97 100644 --- a/2021/src/day4.rs +++ b/2021/src/day4.rs @@ -1,3 +1,4 @@ +use std::fmt; use color_eyre::eyre; use eyre::eyre; @@ -127,6 +128,28 @@ impl Board { } } +impl fmt::Display for Board { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + for row in self.squares { + write!(f, "|")?; + for (i, sq) in row.iter().enumerate() { + let dt = sq.draw_time.map(|dt| format!("{}", dt)).unwrap_or(String::from("__")); + write!(f, "({}: {})", sq.value, dt)?; + if i < 4 { + write!(f, ", ")?; + } + } + write!(f, "|\n")?; + } + if self.bingo_time.is_some() { + write!(f, "Bingo: ({}: {})", self.bingo_value.unwrap(), self.bingo_time.unwrap()) + } + else { + write!(f, "Bingo: (__: __)") + } + } +} + fn load(data: &str) -> eyre::Result> { let mut lines = data.lines().peekable(); @@ -147,6 +170,7 @@ fn load(data: &str) -> eyre::Result> { if squares.len() == 25 { boards.push(Board::from(&squares)?); boards.last_mut().unwrap().set_bingo(); + squares.clear(); } }