aboutsummaryrefslogtreecommitdiff
path: root/src/day5pt1.rs
blob: a50a66aa432721fc9ddba10b80c85dfcb234c48d (plain)
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
pub fn main() {
    let txt = std::fs::read_to_string("./input/day5.txt").unwrap();

    let mut seeds: Vec<i64> = vec![];
    let mut rules: Vec<(i64, i64, i64)> = vec![];

    for (i, line) in txt.lines().enumerate() {
        if line != "" {
            // dodaj u vec
            if i != 0 && line.chars().nth(line.len() - 1).unwrap() != ':' {
                let br: Vec<i64> = line.split(" ").map(|s| s.parse().unwrap()).collect();
                rules.push((br[0], br[1], br[2]));
            }
        } else {
            // obradi
            for i in 0..seeds.len() {
                for rule in &rules {
                    if rule.1 <= seeds[i] && seeds[i] < rule.1 + rule.2 {
                        seeds[i] += rule.0 - rule.1;
                        break;
                    }
                }
            }
            rules.clear();
        }

        if seeds.is_empty() && line != "" {
            seeds = line
                .split(": ")
                .collect::<Vec<_>>()
                .get(1)
                .unwrap()
                .split(" ")
                .map(|s| s.parse().unwrap())
                .collect();
        }
    }
    println!("{}", seeds.iter().min().unwrap());
}