-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy path01.rs
More file actions
25 lines (21 loc) · 1.13 KB
/
Copy path01.rs
File metadata and controls
25 lines (21 loc) · 1.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
use std::time::Instant;
const INPUT: [i32; 100] = [56583,83363,127502,138143,113987,147407,111181,92655,79802,64636,108805,148885,51022,120002,52283,53573,142374,143523,121158,63332,63203,142400,105515,140150,89910,93081,129752,86731,128755,134756,131066,77990,77081,85779,137271,72889,117608,132442,115294,59414,75495,79459,107669,81496,144432,69138,53410,71199,141799,63964,110945,102174,87697,88838,93552,145531,54602,65080,66865,139693,98048,60409,88384,138807,130854,75997,130900,125974,129123,93480,86042,128187,74981,88144,96629,148836,124473,57616,93477,104174,97407,123017,85408,64862,85298,88142,62182,128983,62981,124580,56339,94335,125521,121373,78777,125132,94411,57789,97384,79900];
fn part_one() -> i32 {
INPUT.iter().map(|i| i / 3 - 2).sum::<i32>()
}
fn part_two() -> i32 {
INPUT.iter().map(|&i| {
let (mut ans, mut mass) = (0, i);
loop {
mass = (mass / 3) - 2;
if mass <= 0 { break ans; }
ans += mass;
}
}).sum::<i32>()
}
fn main() {
let now = Instant::now();
println!("Part one: {}", part_one());
println!("Part two: {}", part_two());
println!("Time: {}ms", now.elapsed().as_millis());
}