AOC Day 7 Part 2 with Triangle Number Proof
unknown
rust
4 years ago
1.2 kB
17
Indexable
use std::cmp::{max, min};
use std::io::{self, BufRead};
use std::fs::File;
fn main() {
let file = File::open("./input.txt").unwrap();
let input_lines = io::BufReader::new(file).lines();
let mut str_lines: Vec<String> = Vec::new();
for line in input_lines {
if let Ok(input) = line {
str_lines.push(input);
}
}
let mut numbers: Vec<u64> = Vec::new();
let mut max_num: u64 = 0;
let mut min_num: u64 = u64::MAX;
for line in str_lines {
for token in line.split(",") {
let num: u64 = token.parse().unwrap();
numbers.push(num);
max_num = max(max_num, num);
min_num = min(min_num, num);
}
}
let mut min_fuel: u64 = u64::MAX;
for i in min_num..max_num {
let mut fuel_spent: u64 = 0;
for num in &numbers {
let num_steps = if num > &i { num - i } else { i - num };
fuel_spent += calc_fuel_from_steps(num_steps);
}
min_fuel = min(min_fuel, fuel_spent);
}
println!("Min fuel {}", min_fuel);
}
fn calc_fuel_from_steps(steps: u64) -> u64 {
let fuel = (steps * (steps + 1)) / 2;
fuel
}Editor is loading...