day-01.rs (802B)
1 use std::fs::File;
2 use std::io::prelude::*;
3 use std::io::BufReader;
4
5 fn main() {
6 let input = BufReader::new(File::open("input.txt").unwrap())
7 .lines()
8 .map(|line| line.unwrap().parse::<i32>().unwrap())
9 .collect::<Vec<i32>>();
10 println!("Rust:");
11 println!("Part 1: {}", part_1(&input));
12 println!("Part 2: {}", part_2(&input));
13 }
14
15 fn part_1(module_masses: &Vec<i32>) -> i32 {
16 module_masses
17 .iter()
18 .fold(0, |acc, module_mass| acc + module_mass / 3 - 2)
19 }
20
21 fn part_2(module_masses: &Vec<i32>) -> i32 {
22 module_masses.iter().fold(0, |mut acc, &module_mass| {
23 let mut remain_mass = module_mass;
24 while remain_mass > 0 {
25 remain_mass = remain_mass / 3 - 2;
26 acc += remain_mass;
27 }
28 acc
29 })
30 }