nairby

Day 7 Code

Dec 7th, 2021 (edited)
222
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rust 1.30 KB | None | 0 0
  1. use std::env;
  2. use std::io::{self};
  3. fn part1(input: &Vec<isize>) -> isize {
  4.     let min = input.iter().min().unwrap();
  5.     let max = input.iter().max().unwrap();
  6.     let mut min_fuel = isize::MAX;
  7.     for pos in *min..=*max {
  8.         let mut fuel = 0;
  9.         for crab in input {
  10.             fuel += (pos - crab).abs();
  11.         }
  12.         min_fuel = std::cmp::min(min_fuel, fuel);
  13.     }
  14.     min_fuel
  15. }
  16. fn part2(input: &Vec<isize>) -> isize {
  17.     let min = input.iter().min().unwrap();
  18.     let max = input.iter().max().unwrap();
  19.     let mut min_fuel = isize::MAX;
  20.     for pos in *min..=*max {
  21.         let mut fuel = 0;
  22.         for crab in input {
  23.             let x = (pos - crab).abs();
  24.             fuel += (x.pow(2) + x) / 2;
  25.         }
  26.         min_fuel = std::cmp::min(min_fuel, fuel);
  27.     }
  28.     min_fuel
  29. }
  30. fn day07(input: &str) -> io::Result<()> {
  31.     // Input
  32.     let input = std::fs::read_to_string(input)
  33.         .unwrap()
  34.         .trim()
  35.         .split(",")
  36.         .map(|x| x.parse::<isize>().unwrap())
  37.         .collect();
  38.     // Answers
  39.     println!("Part 1: {}", part1(&input)); // 349812
  40.     println!("Part 2: {}", part2(&input)); // 99763899
  41.     Ok(())
  42. }
  43. fn main() {
  44.     let args: Vec<String> = env::args().collect();
  45.     let filename = &args[1];
  46.     day07(&filename).unwrap();
  47. }
Advertisement
Add Comment
Please, Sign In to add comment