Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
epidemian
GitHub Repository: epidemian/advent-of-code-2021
Path: blob/main/src/day07.rs
97 views
1
pub fn run() {
2
let positions: Vec<i32> = include_str!("inputs/day07")
3
.split(",")
4
.map(|s| s.trim().parse().unwrap())
5
.collect();
6
let max_pos = *positions.iter().max().unwrap();
7
8
let best_cost: i32 = (0..=max_pos)
9
.map(|pos| positions.iter().map(|p| (pos - p).abs()).sum())
10
.min()
11
.unwrap();
12
println!("{}", best_cost);
13
14
let best_cost: i32 = (0..=max_pos)
15
.map(|pos| {
16
positions
17
.iter()
18
.map(|p| (pos - p).abs()) // distances
19
.map(|d| (d + 1) * d / 2) // sum of 1 + 2 + ... + d
20
.sum()
21
})
22
.min()
23
.unwrap();
24
println!("{}", best_cost);
25
}
26
27