a.rs (511B)
1 mod common; 2 use common::*; 3 4 pub fn calculate(name: &str, monkeys: &Vec<Monkey>) -> i64 { 5 let i = monkeys.iter().position(|m| m.name == name).unwrap(); 6 match &monkeys[i].kind { 7 MonkeyType::Num(n) => *n, 8 MonkeyType::Op(op) => { 9 let n1 = calculate(&op.m1, &monkeys); 10 let n2 = calculate(&op.m2, &monkeys); 11 apply_op(n1, n2, op) 12 } 13 } 14 } 15 16 fn main() { 17 let monkeys = read_monkeys_from_stdin(); 18 println!("{}", calculate(&"root", &monkeys)); 19 }