extern crate rusty_oge;
use std::collections::HashMap;
use rusty_oge::module9::*;
#[macro_use]
mod test_macros;
fn to_map(raw_map: &[(&str, &[&str])]) -> HashMap<String, Vec<String>> {
let mut map = HashMap::new();
for (key, val) in raw_map {
map.insert(key.to_string(), Vec::from_iter(val.iter().map(|s| s.to_string())));
}
map
}
Test! {
Name = problem16017,
Input = (to_map(&[
("A", &["B", "V", "G", "D"]),
("B", &["E", "V"]),
("V", &["E", "Z"]),
("G", &["Z", "J"]),
("D", &["G", "J"]),
("E", &["I", "L", "Z"]),
("Z", &["L"]),
("J", &["Z", "K", "L"]),
("I", &["L"]),
("K", &["L"]),
("L", &[]),
]), ("A", "L"), vec![], vec![]),
Output = "22"
}
Test! {
Name = problem18039,
Input = (to_map(&[
("A", &["B", "G"]),
("B", &["D", "K", "V"]),
("G", &["V", "K", "E"]),
("V", &["K"]),
("D", &["K"]),
("E", &["K"]),
("K", &[]),
]), ("A", "K"), vec![], vec![]),
Output = "6"
}
Test! {
Name = problem18248,
Input = (to_map(&[
("A", &["B", "V", "G", "D"]),
("B", &["E", "V"]),
("V", &["E", "Z"]),
("G", &["Z", "J"]),
("D", &["G", "J"]),
("E", &["I", "Z"]),
("Z", &["L"]),
("J", &["Z", "L", "K"]),
("I", &["L"]),
("K", &["L"]),
("L", &[]),
]), ("A", "L"), vec![], vec![]),
Output = "19"
}
Test! {
Name = problem18263,
Input = (to_map(&[
("A", &["B", "V", "G", "D"]),
("B", &["E", "V"]),
("V", &["E", "Z", "G"]),
("G", &["Z", "J"]),
("D", &["J"]),
("E", &["I", "Z", "L"]),
("Z", &["L"]),
("J", &["Z", "L", "K"]),
("I", &["L"]),
("K", &["L"]),
("L", &[]),
]), ("A", "L"), vec![], vec![]),
Output = "26"
}
Test! {
Name = problem18278,
Input = (to_map(&[
("A", &["B", "E", "G"]),
("B", &["C", "E"]),
("G", &["E", "H"]),
("E", &["C", "D", "F", "H"]),
("C", &["D"]),
("H", &["F"]),
("D", &[]),
("F", &["D"]),
]), ("A", "D"), vec![], vec![]),
Output = "14"
}
Test! {
Name = problem18293,
Input = (to_map(&[
("A", &["B", "E", "F"]),
("B", &["C", "D", "E"]),
("F", &["E", "G"]),
("E", &["D", "G"]),
("C", &["D"]),
("G", &["D", "H"]),
("H", &["D"]),
("D", &[]),
]), ("A", "D"), vec![], vec![]),
Output = "13"
}
Test! {
Name = problem35586,
Input = (to_map(&[
("A", &["D", "C", "E", "B"]),
("D", &["C", "E", "G"]),
("C", &["E"]),
("E", &["F", "G"]),
("B", &["E", "F"]),
("F", &["G"]),
("G", &[]),
]), ("A", "G"), vec![], vec![]),
Output = "12"
}
Test! {
Name = problem10244,
Input = (to_map(&[
("A", &["B", "V", "G"]),
("B", &["V", "D"]),
("V", &["D", "E", "J", "G"]),
("G", &["J"]),
("D", &["E", "K"]),
("E", &["K"]),
("J", &["K"]),
("K", &[]),
]), ("A", "K"), vec!["V".into()], vec![]),
Output = "10"
}
Test! {
Name = problem10245,
Input = (to_map(&[
("A", &["B", "V", "G", "D"]),
("B", &["V", "E"]),
("V", &["E", "J"]),
("G", &["V", "J"]),
("D", &["G", "J", "Z"]),
("E", &["J", "I"]),
("J", &["I"]),
("Z", &["J", "I"]),
("I", &[]),
]), ("A", "I"), vec!["V".into()], vec![]),
Output = "12"
}
Test! {
Name = problem10246,
Input = (to_map(&[
("A", &["B", "V", "G", "D"]),
("B", &["V", "E"]),
("V", &["E", "J", "Z"]),
("G", &["V", "Z"]),
("D", &["G", "Z"]),
("E", &["J", "I"]),
("J", &["I"]),
("Z", &["J", "I"]),
("I", &[]),
]), ("A", "I"), vec!["V".into()], vec![]),
Output = "20"
}
Test! {
Name = problem10247,
Input = (to_map(&[
("A", &["B", "V", "G", "D"]),
("B", &["V", "E", "J"]),
("V", &["J"]),
("G", &["V", "J"]),
("D", &["G", "J", "Z"]),
("E", &["J", "I"]),
("J", &["I"]),
("Z", &["J", "I"]),
("I", &[]),
]), ("A", "I"), vec!["J".into()], vec![]),
Output = "10"
}
Test! {
Name = problem10248,
Input = (to_map(&[
("A", &["B", "V", "G", "D"]),
("B", &["V", "E"]),
("V", &["J", "E"]),
("G", &["V", "J"]),
("D", &["G", "J", "Z"]),
("E", &["J", "I"]),
("J", &["I"]),
("Z", &["J", "I"]),
("I", &[]),
]), ("A", "I"), vec!["J".into()], vec![]),
Output = "13"
}
Test! {
Name = problem10249,
Input = (to_map(&[
("A", &["B", "V", "G"]),
("B", &["V", "D"]),
("V", &["G", "D", "E"]),
("G", &["E", "I"]),
("D", &["J", "E"]),
("E", &["J", "I"]),
("J", &["K"]),
("I", &["K"]),
("K", &[]),
]), ("A", "K"), vec!["D".into()], vec![]),
Output = "9"
}
Test! {
Name = problem10250,
Input = (to_map(&[
("A", &["B", "V", "G"]),
("B", &["V", "D"]),
("V", &["G", "D", "E"]),
("G", &["E", "I"]),
("D", &["J", "E"]),
("E", &["J", "I"]),
("J", &["K"]),
("I", &["K"]),
("K", &[]),
]), ("A", "K"), vec!["G".into()], vec![]),
Output = "9"
}
Test! {
Name = problem10251,
Input = (to_map(&[
("A", &["B", "V", "G", "D"]),
("B", &["V", "E"]),
("V", &["J", "E", "Z"]),
("G", &["V", "Z"]),
("D", &["G", "Z"]),
("E", &["J", "I"]),
("J", &["I"]),
("Z", &["J", "I"]),
("I", &[]),
]), ("A", "I"), vec!["V".into()], vec![]),
Output = "20"
}
Test! {
Name = problem10252,
Input = (to_map(&[
("A", &["B", "V", "G", "D"]),
("B", &["V", "E"]),
("V", &["J", "E", "Z"]),
("G", &["V", "Z"]),
("D", &["G", "Z"]),
("E", &["J", "I"]),
("J", &["I"]),
("Z", &["J", "I"]),
("I", &[]),
]), ("A", "I"), vec!["G".into()], vec![]),
Output = "14"
}
Test! {
Name = problem10253,
Input = (to_map(&[
("A", &["B", "V", "G", "D"]),
("B", &["J", "E"]),
("V", &["J", "B", "Z"]),
("G", &["V", "Z"]),
("D", &["G", "Z"]),
("E", &["J", "I"]),
("J", &["I"]),
("Z", &["J", "I"]),
("I", &[]),
]), ("A", "I"), vec!["J".into()], vec![]),
Output = "17"
}
Test! {
Name = problem10254,
Input = (to_map(&[
("A", &["B", "V", "G"]),
("B", &["V", "D"]),
("V", &["G", "D", "E", "I"]),
("G", &["I"]),
("D", &["K", "J", "E"]),
("E", &["K", "I"]),
("J", &["K"]),
("I", &["K"]),
("K", &[]),
]), ("A", "K"), vec![], vec!["V".into()]),
Output = "5"
}
Test! {
Name = problem10255,
Input = (to_map(&[
("A", &["B", "V", "G"]),
("B", &["V", "D"]),
("V", &["G", "D", "E", "I"]),
("G", &["I"]),
("D", &["K", "J", "E"]),
("E", &["K", "I"]),
("J", &["K"]),
("I", &["K"]),
("K", &[]),
]), ("A", "K"), vec![], vec!["E".into()]),
Output = "11"
}
Test! {
Name = problem10256,
Input = (to_map(&[
("A", &["B", "G", "V"]),
("B", &["G"]),
("V", &["G"]),
("G", &["D", "E", "I"]),
("D", &["J", "L", "E"]),
("I", &["K"]),
("E", &["I", "K", "L"]),
("J", &["L"]),
("K", &["L"]),
("L", &[]),
]), ("A", "L"), vec![], vec!["E".into()]),
Output = "9"
}
Test! {
Name = problem10257,
Input = (to_map(&[
("A", &["B", "G", "V"]),
("B", &["G", "J"]),
("V", &["G", "I", "K"]),
("G", &["E", "I"]),
("D", &["L", "E"]),
("I", &["K"]),
("E", &["I", "K", "L"]),
("J", &["D", "G", "L"]),
("K", &["L"]),
("L", &[]),
]), ("A", "L"), vec!["I".into()], vec![]),
Output = "10"
}
Test! {
Name = problem10258,
Input = (to_map(&[
("A", &["B", "G", "V"]),
("B", &["G", "J"]),
("V", &["G", "I", "K"]),
("G", &["E", "I"]),
("D", &["L", "E"]),
("I", &["K", "E"]),
("E", &["K", "L"]),
("J", &["D", "G", "L"]),
("K", &["L"]),
("L", &[]),
]), ("A", "L"), vec!["E".into()], vec![]),
Output = "20"
}
Test! {
Name = problem11016,
Input = (to_map(&[
("A", &["B", "G", "D"]),
("B", &["V", "G"]),
("D", &["E"]),
("G", &["V", "J", "E"]),
("V", &["J"]),
("E", &["J"]),
("J", &["K", "L", "M", "N"]),
("K", &["L", "P"]),
("L", &["P"]),
("M", &["L", "P"]),
("N", &["M"]),
("P", &[]),
]), ("A", "P"), vec!["L".into()], vec![]),
Output = "32"
}
Test! {
Name = problem11017,
Input = (to_map(&[
("A", &["B", "G", "D"]),
("B", &["V", "G"]),
("D", &["E"]),
("G", &["V", "J", "E"]),
("V", &["J"]),
("E", &["J"]),
("J", &["K", "L", "M", "N"]),
("K", &["L", "P"]),
("L", &["P"]),
("M", &["L", "P"]),
("N", &["M"]),
("P", &[]),
]), ("A", "P"), vec!["N".into()], vec![]),
Output = "16"
}
Test! {
Name = problem11019,
Input = (to_map(&[
("A", &["B", "G", "D"]),
("B", &["V", "G"]),
("D", &["E"]),
("G", &["V", "J", "E"]),
("V", &["J"]),
("E", &["J"]),
("J", &["K", "L", "M", "N"]),
("K", &["L", "P"]),
("L", &["P"]),
("M", &["L", "P"]),
("N", &["M"]),
("P", &[]),
]), ("A", "P"), vec!["E".into()], vec![]),
Output = "21"
}
Test! {
Name = problem11020,
Input = (to_map(&[
("A", &["B", "G", "D"]),
("B", &["V", "G"]),
("D", &["E"]),
("G", &["V", "J", "E"]),
("V", &["J"]),
("E", &["J"]),
("J", &["K", "L", "M", "N"]),
("K", &["L", "P"]),
("L", &["P"]),
("M", &["L", "P"]),
("N", &["M"]),
("P", &[]),
]), ("A", "P"), vec!["V".into()], vec![]),
Output = "21"
}
Test! {
Name = problem11021,
Input = (to_map(&[
("A", &["B", "G", "D"]),
("B", &["V", "G"]),
("D", &["E", "N"]),
("G", &["V", "J", "E"]),
("V", &["J", "K"]),
("E", &["J"]),
("J", &["K", "L", "M", "N"]),
("K", &["L", "P"]),
("L", &["M", "P"]),
("M", &["P"]),
("N", &["M"]),
("P", &[]),
]), ("A", "P"), vec!["L".into()], vec![]),
Output = "38"
}
Test! {
Name = problem11022,
Input = (to_map(&[
("A", &["B", "G", "D"]),
("B", &["V", "G"]),
("D", &["E", "N"]),
("G", &["V", "J", "E"]),
("V", &["J", "K"]),
("E", &["J"]),
("J", &["K", "L", "M", "N"]),
("K", &["L", "P"]),
("L", &["P"]),
("M", &["L", "P"]),
("N", &["M"]),
("P", &[]),
]), ("A", "P"), vec!["M".into()], vec![]),
Output = "34"
}
Test! {
Name = problem11023,
Input = (to_map(&[
("A", &["B", "V", "G"]),
("B", &["D", "V"]),
("V", &["D", "E", "G"]),
("G", &["E", "I"]),
("D", &["J", "K", "E"]),
("E", &["K"]),
("I", &["K"]),
("J", &["K"]),
("K", &[])
]), ("A", "K"), vec![], vec!["V".into()]),
Output = "5"
}
Test! {
Name = problem11024,
Input = (to_map(&[
("A", &["B", "V", "G"]),
("B", &["D", "V"]),
("V", &["D", "E", "G"]),
("G", &["E", "I"]),
("D", &["J", "K", "E"]),
("E", &["I"]),
("I", &["K"]),
("J", &["K"]),
("K", &[])
]), ("A", "K"), vec![], vec!["V".into()]),
Output = "5"
}
Test! {
Name = problem11025,
Input = (to_map(&[
("A", &["B", "V", "G", "D"]),
("B", &["E", "V"]),
("V", &["E", "J", "Z"]),
("G", &["V", "Z"]),
("D", &["G", "Z"]),
("E", &["J", "I"]),
("Z", &["J", "I"]),
("J", &["I"]),
("I", &["K", "L"]),
("K", &["M"]),
("L", &["M"]),
("M", &[]),
]), ("A", "M"), vec!["J".into()], vec!["K".into()]),
Output = "16"
}
Test! {
Name = problem11027,
Input = (to_map(&[
("A", &["B", "V", "G", "D"]),
("B", &["E", "V"]),
("V", &["E", "J", "Z"]),
("G", &["V", "Z"]),
("D", &["G", "Z"]),
("E", &["J", "I"]),
("Z", &["J", "I"]),
("J", &["I"]),
("I", &["K", "L"]),
("K", &["M"]),
("L", &["M"]),
("M", &[]),
]), ("A", "M"), vec!["L".into()], vec!["E".into()]),
Output = "18"
}
Test! {
Name = problem12858,
Input = (to_map(&[
("A", &["B", "V"]),
("B", &["G", "J", "D", "V"]),
("V", &["D"]),
("G", &["E", "J"]),
("J", &["E", "K"]),
("D", &["J", "K"]),
("E", &["K"]),
("K", &[]),
]), ("A", "K"), vec!["J".into()], vec![]),
Output = "10"
}
Test! {
Name = problem18177,
Input = (to_map(&[
("A", &["B", "V", "G", "D"]),
("B", &["E", "V"]),
("V", &["Z", "G"]),
("G", &["Z", "J"]),
("D", &["G", "J"]),
("E", &["I"]),
("Z", &["L"]),
("J", &["Z", "L", "K"]),
("I", &["L"]),
("K", &["L"]),
("L", &[]),
]), ("A", "L"), vec!["G".into()], vec![]),
Output = "16"
}
Test! {
Name = problem18192,
Input = (to_map(&[
("A", &["B", "V", "G", "D"]),
("B", &["E", "V"]),
("V", &["Z", "E"]),
("G", &["Z", "V"]),
("D", &["G", "J"]),
("E", &["I", "Z", "L"]),
("Z", &["L"]),
("J", &["Z", "K"]),
("I", &["L"]),
("K", &["L"]),
("L", &[]),
]), ("A", "L"), vec!["E".into()], vec![]),
Output = "15"
}
Test! {
Name = problem18218,
Input = (to_map(&[
("A", &["B", "V", "G", "D"]),
("B", &["E", "V"]),
("V", &["Z", "G"]),
("G", &["Z", "J"]),
("D", &["G", "J"]),
("E", &["I", "Z", "L"]),
("Z", &["L"]),
("J", &["Z", "L", "K"]),
("I", &["L"]),
("K", &["L"]),
("L", &[]),
]), ("A", "L"), vec!["Z".into()], vec![]),
Output = "12"
}
Test! {
Name = problem18233,
Input = (to_map(&[
("A", &["B", "V", "G", "D"]),
("B", &["E", "V"]),
("V", &["Z", "G", "E"]),
("G", &["Z", "J"]),
("D", &["G", "J"]),
("E", &["I", "Z", "L"]),
("Z", &["L"]),
("J", &["L", "K"]),
("I", &["L"]),
("K", &["L"]),
("L", &[]),
]), ("A", "L"), vec!["V".into()], vec![]),
Output = "14"
}
Test! {
Name = problem18430,
Input = (to_map(&[
("A", &["B", "V", "G"]),
("B", &["D", "V"]),
("V", &["D", "E", "J", "G"]),
("G", &["J"]),
("D", &["E", "K"]),
("E", &["K"]),
("J", &["K"]),
("K", &[]),
]), ("A", "K"), vec!["V".into()], vec![]),
Output = "10"
}