aboutsummaryrefslogtreecommitdiff
path: root/2022/13/b.rs
blob: baaad3fdc91ad5c75c18d0edeb333d49e94e4e87 (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
use std::cmp::Ordering;
mod common;
use common::*;

fn driver(n: i64) -> Packet {
    Packet::List(vec![Packet::List(vec![Packet::Number(n)])])
}

fn find_driver(v: &Vec<Packet>, n: i64) -> usize {
    v.iter()
     .position(|p| compare(p, &driver(n)) == Ordering::Equal)
     .unwrap() + 1
}

fn main() {
    let mut v = vec![driver(2), driver(6)];
    let mut line = String::new();
    while std::io::stdin().read_line(&mut line).unwrap() > 0 {
        if line.len() > 1 { v.push(parse(line.as_bytes())); }
        line.clear();
    }

    v.sort_by(compare);

    println!("{}", find_driver(&v, 2) * find_driver(&v, 6));
}

Generated with cgit - Back to sebastiano.tronto.net