summaryrefslogtreecommitdiff
path: root/2024/1/p2.rs
blob: ebaa4db50032a751965dd9bec5f629592c15e041 (plain) (blame)
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::collections::HashMap;

const INPUT_FILE: &str = "input";

fn main() {
    let input = std::fs::read_to_string(INPUT_FILE).expect("Reading input file");
    let mut left: Vec<u32> = vec![];
    let mut right: HashMap<u32, u32> = HashMap::new();
    for line in input.lines() {
        let mut fields = line.split_whitespace();
        let e = "Wrong file format";
        left.push(fields.next().expect(e).parse().expect(e));
        let r: u32 = fields.next().expect(e).parse().expect(e);
        match right.get(&r) {
            None => right.insert(r, 1),
            Some(v) => right.insert(r, v + 1),
        };
    }

    let mut distance: u32 = 0;
    for l in left {
        distance += l * right.get(&l).unwrap_or(&0);
    }
    println!("Distance: {}", distance);
}