From 9e1a52e931c6d14fb8aac98cb23094208d488e3c Mon Sep 17 00:00:00 2001 From: Johannes Date: Sun, 1 Dec 2019 10:00:24 +0100 Subject: [PATCH] day01 use successors --- src/tasks/day01.rs | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/tasks/day01.rs b/src/tasks/day01.rs index b586cf9..82febad 100644 --- a/src/tasks/day01.rs +++ b/src/tasks/day01.rs @@ -22,19 +22,21 @@ fn task1(content: &String) { } fn task2(content: &String) { - fn while_fun(mass: i32) -> i32 { - let to_add = mass / 3 - 2; - if to_add < 1 { - 0 - } else { - to_add + while_fun(to_add) - } - }; - let fuel: i32 = content .lines() .map(|line| line.parse::().unwrap()) - .map(while_fun) + .map(|mass| { + std::iter::successors(Some(mass), |m| { + let needed_fuel = m / 3 - 2; + if needed_fuel > 0 { + Some(needed_fuel) + } else { + None + } + }) + .skip(1) + .sum::() + }) .sum(); println!("Task 2: {}", fuel);