From 374eda945bb87dc51e5870bd2f31e560f1e0df99 Mon Sep 17 00:00:00 2001 From: Bert Peters Date: Mon, 18 Feb 2019 15:39:41 +0100 Subject: [PATCH] Reduce code duplication. --- 2018/src/day10.rs | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/2018/src/day10.rs b/2018/src/day10.rs index 5c4ce84..6dd340f 100644 --- a/2018/src/day10.rs +++ b/2018/src/day10.rs @@ -95,25 +95,8 @@ impl Day10 { dist.checked_div(speed).unwrap_or(1).max(1) } -} -impl Solution for Day10 { - fn part1(&mut self, input: &mut Read) -> String { - self.read_inputs(input); - let mut prev = self.height(); - let initial = self.underestimate_time(); - self.run(initial); - let mut height = self.height(); - while height < prev { - prev = height; - self.run(1); - height = self.height(); - } - self.run(-1); - self.print_state() - } - - fn part2(&mut self, input: &mut Read) -> String { + fn simulate(&mut self, input: &mut Read) -> i32 { self.read_inputs(input); let mut prev = self.height(); let mut steps = self.underestimate_time(); @@ -126,7 +109,19 @@ impl Solution for Day10 { self.run(1); height = self.height(); } - (steps - 1).to_string() + self.run(-1); + steps - 1 + } +} + +impl Solution for Day10 { + fn part1(&mut self, input: &mut Read) -> String { + self.simulate(input); + self.print_state() + } + + fn part2(&mut self, input: &mut Read) -> String { + self.simulate(input).to_string() } }