Add day 1 in Rust

This commit is contained in:
kageru 2019-12-01 19:00:25 +01:00
parent 99304170ae
commit b91f98240b
Signed by: kageru
GPG Key ID: 8282A2BEA4ADA3D2

32
2019/1/day1.rs Normal file
View File

@ -0,0 +1,32 @@
use std::io::{self, BufRead};
use std::ops::Div;
fn main() {
let lines: Vec<u32> = io::stdin()
.lock()
.lines()
.map(|l| l.unwrap().parse().unwrap())
.collect();
println!("Part 1: {}", part1(lines.clone()));
println!("Part 2: {}", part2(lines));
}
fn part1(numbers: Vec<u32>) -> u32 {
numbers.into_iter().map(cost).sum()
}
fn part2(numbers: Vec<u32>) -> u32 {
numbers.into_iter().map(|m| cost_rec(m, 0)).sum()
}
fn cost(mass: u32) -> u32 {
mass.div(3).saturating_sub(2)
}
fn cost_rec(mass: u32, acc: u32) -> u32 {
let c = cost(mass);
match c {
0 => acc,
_ => cost_rec(c, acc + c)
}
}