aboutsummaryrefslogtreecommitdiff
path: root/2022/21/a.rs
blob: 297f97af89640826de8f97a2b8ef609f438dce28 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
mod common;
use common::*;

pub fn calculate(name: &str, monkeys: &Vec<Monkey>) -> i64 {
    let i = monkeys.iter().position(|m| m.name == name).unwrap();
    match &monkeys[i].kind {
        MonkeyType::Num(n) => *n,
        MonkeyType::Op(op) => {
            let n1 = calculate(&op.m1, &monkeys);
            let n2 = calculate(&op.m2, &monkeys);
            apply_op(n1, n2, op)
        }
    }
}

fn main() {
    let monkeys = read_monkeys_from_stdin();
    println!("{}", calculate(&"root", &monkeys));
}

Generated with cgit - Back to sebastiano.tronto.net