Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use std::env;
- use std::io::{self};
- fn part1(input: &Vec<isize>) -> isize {
- let min = input.iter().min().unwrap();
- let max = input.iter().max().unwrap();
- let mut min_fuel = isize::MAX;
- for pos in *min..=*max {
- let mut fuel = 0;
- for crab in input {
- fuel += (pos - crab).abs();
- }
- min_fuel = std::cmp::min(min_fuel, fuel);
- }
- min_fuel
- }
- fn part2(input: &Vec<isize>) -> isize {
- let min = input.iter().min().unwrap();
- let max = input.iter().max().unwrap();
- let mut min_fuel = isize::MAX;
- for pos in *min..=*max {
- let mut fuel = 0;
- for crab in input {
- let x = (pos - crab).abs();
- fuel += (x.pow(2) + x) / 2;
- }
- min_fuel = std::cmp::min(min_fuel, fuel);
- }
- min_fuel
- }
- fn day07(input: &str) -> io::Result<()> {
- // Input
- let input = std::fs::read_to_string(input)
- .unwrap()
- .trim()
- .split(",")
- .map(|x| x.parse::<isize>().unwrap())
- .collect();
- // Answers
- println!("Part 1: {}", part1(&input)); // 349812
- println!("Part 2: {}", part2(&input)); // 99763899
- Ok(())
- }
- fn main() {
- let args: Vec<String> = env::args().collect();
- let filename = &args[1];
- day07(&filename).unwrap();
- }
Advertisement
Add Comment
Please, Sign In to add comment