diff --git a/day1/src/main.rs b/day1/src/main.rs index a061ad2..1a933b7 100644 --- a/day1/src/main.rs +++ b/day1/src/main.rs @@ -1,10 +1,12 @@ -fn fuel_for_modules1(input: &str) -> i64 { - let mut fuel: i64 = 0; - for module in input.split_whitespace() { - let module: i64 = module.parse().unwrap(); - fuel += (module / 3) - 2; - } - fuel +fn fuel_for_mass1(mass: u64) -> u64 { + mass / 3 - 2 +} + +fn fuel_for_modules1(input: I) -> u64 +where + I: IntoIterator, +{ + input.into_iter().map(fuel_for_mass1).sum() } fn fuel_for_mass2(mass: u64) -> u64 { @@ -13,17 +15,15 @@ fn fuel_for_mass2(mass: u64) -> u64 { fuel + fuel_for_mass2(fuel) } -fn fuel_for_modules2(input: &str) -> u64 { - let mut fuel: u64 = 0; - for module in input.split_whitespace() { - let module: u64 = module.parse().unwrap(); - fuel += fuel_for_mass2(module); - } - fuel +fn fuel_for_modules2(input: I) -> u64 +where + I: IntoIterator, +{ + input.into_iter().map(fuel_for_mass2).sum() } fn main() { - let input = include_str!("input.txt"); - println!("Fuel 1: {}", fuel_for_modules1(input)); + let input = include_str!("input.txt").split_whitespace().map(|s| s.parse::().unwrap()); + println!("Fuel 1: {}", fuel_for_modules1(input.clone())); println!("Fuel 2: {}", fuel_for_modules2(input)); }