AoC2019/src/day1.rs

29 lines
630 B
Rust

use std::io::BufRead;
pub fn part1<F: BufRead> (input: F) {
let res: i32 = input.lines()
.filter_map(|line| line.unwrap().parse::<i32>().ok())
.map(|mass| mass / 3 - 2)
.sum();
println!("{}", res);
}
fn recursive_fuel_mass(mass: i32) -> i32 {
let fuel_mass = mass / 3 - 2;
if fuel_mass <= 0 {
0
} else {
fuel_mass + recursive_fuel_mass(fuel_mass)
}
}
pub fn part2<F: BufRead> (input: F) {
let res: i32 = input.lines()
.filter_map(|line| line.unwrap().parse::<i32>().ok())
.map(recursive_fuel_mass)
.sum();
println!("{}", res);
}