diff --git a/2020/src/day18.rs b/2020/src/day18.rs index 5d264a7..6de82be 100644 --- a/2020/src/day18.rs +++ b/2020/src/day18.rs @@ -65,7 +65,7 @@ fn lex(input: &str) -> Vec { .collect() } -fn parse(tokens: &[Token]) -> u64 { +fn parse_part1(tokens: &[Token]) -> u64 { /* let mut p = Parser::default(); dbg!(&p); @@ -131,9 +131,18 @@ fn parse(tokens: &[Token]) -> u64 { } } +fn parse_part2(tokens: &[Token]) -> u64 { + todo!("parse_part2"); +} + #[aoc(day18, part1)] fn solution1(tokens_list: &[Vec]) -> u64 { - tokens_list.iter().map(|tokens| parse(tokens)).sum() + tokens_list.iter().map(|tokens| parse_part1(tokens)).sum() +} + +//#[aoc(day18, part2)] +fn solution2(tokens_list: &[Vec]) -> u64 { + tokens_list.iter().map(|tokens| parse_part2(tokens)).sum() } #[cfg(test)] @@ -171,22 +180,406 @@ mod tests { ("5 + (8 * 3 + 9 + 3 * 4 * 3)", 437), ("5 * 9 * (7 * 3 * 3 + 9 * 3 + (8 + 6 * 4))", 12240), ("((2 + 4 * 9) * (6 + 9 * 8 + 6) + 6) + 2 + 4 * 2", 13632), - ("((9 * 7 + 6 + 7 * 9 + 2) * 4 + 3 + 4 + 4 * 6) * 8 + (4 + (8 + 2 * 6 * 4 * 3)) + (5 + 2 * 6 * (4 * 5 + 4 + 2)) + 4 * (6 + 3 * (2 * 2 * 6 * 3) + 8 + 4 * 5)", 1740572064000), + //("((9 * 7 + 6 + 7 * 9 + 2) * 4 + 3 + 4 + 4 * 6) * 8 + (4 + (8 + 2 * 6 * 4 * 3)) + (5 + 2 * 6 * (4 * 5 + 4 + 2)) + 4 * (6 + 3 * (2 * 2 * 6 * 3) + 8 + 4 * 5)", 1740572064000), ] { - let got = parse(&lex(input)); + let got = parse_part1(&lex(input)); eprintln!("got {}, want {} for {}", got, want, input); assert_eq!(got, want, "got {}, want {} for {}", got, want, input); } let input = r#"1 + 2 * 3 + 4 * 5 + 6 -2 * 3 + (4 * 5) -5 + (8 * 3 + 9 + 3 * 4 * 3) -5 * 9 * (7 * 3 * 3 + 9 * 3 + (8 + 6 * 4)) -((2 + 4 * 9) * (6 + 9 * 8 + 6) + 6) + 2 + 4 * 2"#; + 2 * 3 + (4 * 5) + 5 + (8 * 3 + 9 + 3 * 4 * 3) + 5 * 9 * (7 * 3 * 3 + 9 * 3 + (8 + 6 * 4)) + ((2 + 4 * 9) * (6 + 9 * 8 + 6) + 6) + 2 + 4 * 2"#; assert_eq!(solution1(&generator(input)), 71 + 26 + 437 + 12240 + 13632); } - #[test] - fn comprehensive() { + fn comprehensive_part1() { + let mut ts = vec![ + ("(7 * (3 + 8 + 8 + 7) + (6 + 8 * 2 + 5 + 2 * 6) * (5 + 2) * 9) + ((7 * 4 + 8) * 6 * 8 + 9) * 7 * 2 * 2", 740124), + ("6 * ((9 + 4) * (6 * 7 + 5 + 8 * 2))", 8580), + ("7 * 8 + 2 + 8 * (8 * 4) * (4 + 8)", 25344), + ("(9 + 3 + 2 * 5 * 8) + 9 + 5 * 2 * 5 * (6 * 6 * 4 + 6 * 9 * 3)", 23247000), + ("6 * 6 * 4 * (6 + (3 * 9 * 2) + 9 + (4 + 7 + 7))", 12528), + ("7 * ((4 * 6 + 4 + 6 * 8 + 6) + (2 * 7 * 8 + 5 * 3 + 7) + (5 * 5 * 5 * 7) + 8 * 7)", 74431), + ("(8 + 9 * 7 * 9 + 6) + (7 + 5) + 6", 1095), + ("5 * (6 * (3 + 2 + 9)) + 8 + 3 + 5 * (4 + 3 * 8 * 8 * 6 * 2)", 2343936), + ("4 + (3 + 4 * (4 + 9 + 3) * (4 * 8 * 4 * 9))", 129028), + ("4 * 4 * 6 * 2 + ((8 * 4 * 3 + 6) * 5) + 6", 708), + ("(8 * (8 + 5 + 5 * 7) * 9 + 2 + 9) * 4 + 9 * ((3 + 3) + 8) + 9", 508783), + ("((9 + 8 * 3 + 2 + 9 + 8) * 3 + (3 + 7 * 6) * 9 * 2) + 3 * 7", 34041), + ("5 + 5 * (5 * (6 + 6 + 6 + 7) * 7 + (9 * 4) * 4 * (8 * 9))", 2623680), + ("7 * (2 * 7 + 3 + 5 + 5 * 2) + 4 + 3 * 3 + 5", 1160), + ("(4 + 5 * (2 * 4 + 5 * 2 * 7 + 5) + 2 + 9) + 4 + 9 * 9 * 3", 46089), + ("7 * 6 + (6 * 2 + 4 + 5 * 8) + (6 * 2 * (4 * 7 * 2) + 9 * (5 * 2 * 4) + (3 + 2 * 5)) * 8", 219800), + ("2 + ((9 * 3 * 3 * 3) * (5 * 9 + 6 + 7 + 6 + 8) * 3)", 52490), + ("7 * ((9 + 7 + 4 * 3 * 4 + 4) + 4 * 3) * 5 * 3 * 7", 546840), + ("8 * (3 + 5 * 9 + 4) * 6 + 4", 3652), + ("7 + 6 * 7 * ((7 * 6 * 2) * 3) * 5 * 7", 802620), + ("8 + 5 * 4 * (3 + 5 * (8 + 5 * 2) + 6) + 6", 11134), + ("4 * 8 + ((3 * 5 * 4) + 7) + (4 * 2)", 107), + ("((5 + 8 + 7 + 6 * 6 + 3) + 4 * 3 * (5 * 2) * 5 * (2 * 9)) + 6 + 3 * (2 * (2 + 4 + 8) * 4) + (9 + 3 + 6 * (9 + 5 * 6 * 3 * 8 * 5) + (4 * 6) + (6 * 3 + 2 + 8))", 49473700), + ("(3 + 4 + 8) + 6 * (7 * 6 * (9 * 3 * 5 * 5 * 4 * 5) + (6 + 4) * (5 * 2 * 3 + 3) + (2 * 7)) + 2 * 4", 1571752904), + ("6 * (6 * 9 * (3 * 9) * 4 + 9) + 6", 35052), + ("4 + 6 * 7 * ((3 + 5 + 3) * (6 + 3 * 9 + 6 * 8 * 9) + 6 * 4) * 8", 154358400), + ("5 + (6 + 9 * (7 * 8 * 8 * 3 * 4) + 2) * 4 * 2", 645176), + ("(2 * 7 * 6 + 9 + (3 * 6 + 4 * 7 + 5) + 8) + 7 + 7 * 8", 2192), + ("2 + (6 + 4 + (5 + 5) * 7) * 2 + 7 * 5", 1455), + ("4 + 9 * 3 + 8 * 6", 282), + ("(5 + 5 + 9 * 8 * (4 * 5 + 6 + 3 * 8 * 3) + 6) + 9 + 9", 105816), + ("(8 * 4 * 7 + 9 + 6 * 9) * (9 + 2 * 2) + 3", 47325), + ("((9 * 4 + 8 + 4 * 2 + 2) * 3 + (6 + 9 * 5 * 4) * 4 + 6 * 5) * 5 * 3 * 5 + (3 + 5 * 4)", 893282), + ("5 + (5 * 3) * (2 + 8) * (3 + 6 + 4 * 6 + 7 + 7) * 5 * 7", 644000), + ("6 * 6 * 7 * (5 * 4 + 2 + 6 + (8 + 6 + 4 + 9 * 5))", 41076), + ("2 * 9 + (2 * (8 * 7 + 6 + 5 + 3) + 2 + 9 * (3 * 9 * 4 * 7 * 7 + 5) + 3) + (4 + 6 * 4 + 6)", 799914), + ("(9 + (8 * 8 + 2 + 2 * 6 + 6)) * 8 + 4 + 3 + (9 + 3 + 9 + 9 * 4 * 8) * 2", 8702), + ("8 * 4 * (4 * (3 + 7 * 7 + 3) + 8 * (5 + 2 + 3) * 2) + 9", 192009), + ("5 + (6 * (3 * 3 + 7 * 3) * (4 * 4) + 2 * 4 * 4)", 73765), + ("3 + (5 * 8 * 9 * 3 + 9 * (6 * 7)) * 9 + 3", 411672), + ("3 * (9 * 3 + (5 + 4 * 7 + 3 + 8)) + 4 * 2 * 3", 1842), + ("8 * 9 + 6 + (7 + 7 + 9 * 8 * 5 * 6) * 5", 27990), + ("(8 + 9 + 3 + 7 * 7) + 2 + 9 + (8 + 7 + 4 + 2) + 9", 230), + ("4 * (2 * (7 * 4 + 2 + 9 + 6 + 7) + (4 + 2) * 3 + 9 + 6) + 6 * 4 + 7 * 5", 27755), + ("(3 * 4 + (5 * 8 * 2) * (7 + 8)) + 7 + 8 + 5 + ((6 * 9) * 4 * 5)", 2480), + ("4 + ((9 + 9) + (7 * 8 + 2 * 8 * 2) + 9) + 2 + 7 * 2", 1936), + ("8 * 3 * (9 + 5 + 8 + 5)", 648), + ("4 + 4 + (6 + 2 * 7 + 9 + 6 * 5)", 363), + ("((8 + 3 * 8 * 2) + 7 + 7 * (7 * 7 * 7 + 3) * 9 * (9 * 4 + 7)) + 4 + 6", 25441390), + ("6 + (7 * 2 + 4 + 5 + 4) + 9 + ((7 * 9) * 7) * 5", 2415), + ("(7 * 3 * 2) * ((9 + 6 * 2 * 6 * 3) + (6 * 7) + 3 + (6 + 5 * 5 + 4 + 9 * 6) * 4 + 9) + 4 + 7 + 6", 167219), + ("9 * (3 * (9 + 8)) * 4", 1836), + ("6 * (4 * 2 * (9 * 5 * 4 + 7 + 9) + 6 + (3 + 6 * 2)) * 5 * (3 * (2 + 6 * 8 * 6 + 3 + 7) * 8 * 7 * (9 * 8 * 7 + 7 + 9) * 7) + 3 + 6", 11507240908809), + ("7 + 3 * ((6 * 3 * 9) + 3 * 9)", 14850), + ("7 * ((4 + 4 * 4 * 9 * 7) + 2 * 9) * 8 * 6 * 6 + 3", 36614595), + ("6 + 5 + (5 + 3 * (3 + 7 + 9 * 3) * 6) + 3 + ((2 * 3 * 4 + 4) * 6 + (3 + 3) + 2)", 2926), + ("9 + ((8 * 9 * 3 * 2) * 5 + 8)", 2177), + ("(2 + 7) * 3 * (8 + 5) + 9", 360), + ("4 * (5 + 4 + 6 * (9 * 4 + 8 * 4 * 7 * 3) * (4 * 4 * 6) * (9 + 7 + 8 * 4)) * (4 + 4 + 9 + 8) + 7 * 8 + 5", 408748032061), + ("((7 * 4 * 4 * 3) * 4 + 2 * 2 + 2) * 9 + 9 * 8 + 9", 194049), + ("4 + 6 + 2 * (5 + 3 + 8 * 4)", 768), + ("((7 + 6) + 3 * 3 * 5) * ((9 * 3 + 5 + 8) + (3 + 8 * 8 + 7 + 5 * 6) + 2 * 5 + (7 + 9 + 2)) + (4 * 2 * (5 + 8 + 5 + 3) * 5 + 6 * 2) + 6 * 5 * (2 * (9 + 4) * (7 * 8) * 8 + 7)", 45245758950), + ("6 + 5 + 5 + 2 * 5", 90), + ("5 + 5 + 8 * 8 + 2 + 6", 152), + ("(3 * (4 * 6 * 8 * 2)) + 3", 1155), + ("(5 + 6 * 3 + 5 * 2) * 5 * (3 * 5 + 2 * 7 * 9 * 3) + 5 * ((6 + 2 * 7 + 2 + 4 + 2) * 9 + 6) + 7", 710589997), + ("(7 + 7 * 4 * 7) * ((8 * 5 * 9) + 6 * 9 + 3 * 3 * 9) * 8 * ((3 * 5 * 2 + 6 + 5) * 7 + (6 * 2 * 7 * 7) + 8 + 8 + 6)", 250409734848), + ("(3 * 6 + 7 + 6 + 3 + 7) * 4 * 7 * ((9 + 3 + 6) * 5 + 3 + (5 * 7 + 4 + 5 * 2) + 5) * 5 * 9", 9608760), + ("7 * ((7 + 6 + 2 + 9) + 3 * 4 + 9 + 2 + 2) + 2", 849), + ("3 * 8 * 2 * (6 * 2 * 2 + 4 * 8) + 8 + 7", 10767), + ("8 + 3 + ((4 * 6 * 5 * 7) * 9 + 9 + 8 * 4)", 30319), + ("(6 + 4 + (6 + 3 + 3 + 3) + 6) * 9", 279), + ("2 * 6 * (5 + 2) * (6 * 6 + 7 + 2)", 3780), + ("4 + (8 + 2 + 4) * 4 * 5 + (9 * 5 + 9) + 8", 422), + ("6 * 3 * 9 + 6 + (2 * 4 * 3 + 2 * 5 * 3) * 6", 3348), + ("2 + (8 + 5 * 7 + 4 + 7 * (2 + 9 * 6 * 5 * 3 + 3)) + 9 * 4", 405188), + ("(9 + (2 + 6 + 7 * 4 * 8) + 9 * 4 + 9) * 3 + 8 * 8", 48088), + ("2 * (9 * 5 * 9 + (8 * 9 + 5)) * 8 * 8", 61696), + ("3 + 6 + 2 * 3 * 9 + 9", 306), + ("8 * 7 + 8 * (5 + 6) * 5 + 4", 3524), + ("4 * (6 * 2 * (3 + 6 * 3) + 7 * 5 + 6)", 6644), + ("(7 * 3 * 7 * 4 * 3 * 2) * (9 + 8 * 9) + 9 * (4 * 5 + 3 + 5 + 9)", 19972341), + ("9 + 8 * 3 * 4 + (9 + 8 * 9) + (4 * (6 * 4 * 9 * 5 + 6 + 4) + 8 + 7 + (4 * 9))", 4768), + ("2 * (4 * (3 + 4 + 8 + 5) * 8 * 6)", 7680), + ("8 * (8 * 2 * 6 + 6 + 6) * 8", 6912), + ("(9 + 3 * 4 * 9 + 5 * 5) * 4", 8740), + ("(9 * 9 * 4 * 4 + (6 * 2) + (3 + 3 * 2)) + 3 + ((2 * 3 + 8 * 4 * 8 * 2) + 2 + 3)", 2224), + ("7 * (9 * (6 + 3 + 7)) * ((8 + 3 + 3 * 3 + 3 + 7) + 4 + 5 + 3 * (6 * 4 * 6 * 6 + 2 * 5) + (2 + 3 + 9 + 3 * 6 + 4)) + 6", 279443814), + ("8 + 6 * (3 + 5 + 6 + 9) * 4", 1288), + ("(6 + 7 + 7 + 7 * 6 + 5) + 3 * 5 * 4 * 5 * 6", 102000), + ("(2 * 9 + 9 + 3 * 7 + 6) + 3 + 7 + 4 + 9", 239), + ("(7 + (8 * 7 * 4 * 7 * 2 + 4) + (5 + 2 * 2 + 2 * 2 * 6)) * 3 * 4 + (4 * 2 + 4 * 6 + 3 * (8 * 6 + 4 * 3 * 7)) * 6", 731808), + ("2 * (3 * (5 * 7 * 8 * 7 + 8) + (6 * 3 + 5) + 5 + 9)", 11882), + ("8 * 4 + ((7 + 2 + 8) + (2 * 8 * 4 * 4 + 4 * 7) * 2) * 5 * 4", 74120), + ("2 * 6 * 2", 24), + ("2 + (2 + 6 * 5 * 9) + ((8 + 2 * 6 * 5 * 5) * 7 + 3) + 3", 10868), + ("((9 + 4 + 6 * 3 + 9) * 5) * (7 * 2 * 7 * 5 * 2) + 7 + 9 + 7", 323423), + ("2 + 2 * 8 + 8", 40), + ("4 + 6 + 4 * 7", 98), + ("4 + 5 + 5 * 8 * (8 + 4 + (2 * 8 + 9 * 9 + 4 + 5))", 27552), + ("(7 + 2 + (8 * 4 * 2 + 9 * 6) * 4) * 2 + (9 * 2 * 8 * 9 * 4)", 8760), + ("4 + 9 + 6 * (4 * 6) + 7", 463), + ("6 + 4 + 8 * (7 * 9 + 7)", 1260), + ("3 * 2 + 2 + 9 + (2 * 9 * 2 * 8 * 2 * (2 + 8 + 9 * 9 + 7)) * 7", 717815), + ("9 + 9 + 5", 23), + ("(2 + 3 * 3) + 7", 22), + ("(9 * 7 + (8 + 8 * 6) + 2 * 7 * 3) + 6 * (5 * (2 + 9 + 9 + 6) + 6) * 8 * (4 + 4 * 6 * 5 + 5) * 8", 7222709760), + ("7 + 4 + (4 * 2 + (2 * 7 + 2 + 4 + 2 + 5) + 9 * (9 * 7 + 7)) + 9 + 7 + (8 + 9 * 7 + 2 + (7 * 8 * 5 * 4 + 6 + 8))", 4362), + ("(8 * 3) * (9 + 2 * 7 * 7 + 7) * 6 * 8 + 8 + (9 + 9 + 3 * 5 + 3)", 629108), + ("4 * 5 + 2 + 4", 26), + ("((7 + 3 * 8 + 3) * 8 + 4 + 4 * 4 + 8) * 5 + 9 * (3 * 9 + 8 * 7 * 9 * 4) + 7", 118972987), + ("(8 + 6 + 7 + 9) + 8 * 6 * (5 + 2 + 3) * 8", 18240), + ("(9 * 8 * (6 * 5) + 9) + 4 + 8 + 8 * 8", 17512), + ("(4 + 5 * 9) * 7 + 7 * 6 + 8 * (2 + 5 * 8)", 193312), + ("(4 + 3 + (6 + 2 + 2 + 6 * 6 * 2) * 4 * 2 * 9) + 3", 14331), + ("8 * (5 + 8 + 2 * 7) + 2 + ((5 * 6 + 4 + 7 + 6 * 5) * 7 * 3 + 8)", 5785), + ("2 + 5 + (6 * 3 + 2) + 8", 35), + ("2 + 9 * 6 * 5 + 5", 335), + ("3 * 3 + 7", 16), + ("(9 + 4 * 9) + 5 + (2 * 6 * (6 + 9) + 2 + 6) * 2 * ((9 * 6 + 7 * 3) + 5 * 2 + 3 * 9)", 2114820), + ("2 + 6 + ((6 * 9 * 9 * 8 * 9) + 9) * (5 + 2 * 5 * (3 + 5 * 8 * 5 * 2 * 9) * 8) * ((7 + 9 + 3 + 6 + 5) * 4 * 5)", 33877509120000), + ("3 * 9 * (5 + (3 * 4 * 2 + 8) + 5 * 3) + 4", 3406), + ("9 * (9 * 3 + 3 + 4 + 7 + 4) + 3", 408), + ("2 * 9 + 3 * 9 + 5 + 9", 203), + ("(6 + (6 * 6 * 6 + 7 + 7 + 5) * 5) + 3 + 4 * 9", 10908), + ("(2 * 8 * 8 * 6 * 8) + (5 + (5 * 6) * (8 + 5 + 7 * 7 + 2) + (6 * 4 + 7 + 5) + (3 + 5 + 8 + 6)) * 8 + ((8 * 3 + 3 * 7) * 4 + (3 * 8 * 4))", 90228), + ("4 + ((9 * 2 * 9 * 9 * 7 + 5) * 6) * 7 * 7 + 5 * 8", 24017880), + ("(3 * 6 + 6 * (5 + 6 * 4 * 6 + 2 + 9)) * 9 * 9 + (2 * 7 * 2 * 5)", 534740), + ("6 + 2 + (8 + 6)", 22), + ("6 + 3 * (3 + 3) + 8 * (9 * 6)", 3348), + ("(2 * 8 + 4 + 5) + 7", 32), + ("7 + (2 * 9 * 5 * 6)", 547), + ("2 + 9 + ((7 + 3 + 3 * 9) * 6 + (5 + 2 + 8 + 5 * 6) * 7 + 8)", 5773), + ("((4 + 9 + 8 * 6 + 8 * 9) + 8) * 6", 7284), + ("9 * (9 * 3 + (3 * 8 * 8 * 7) * (4 + 8) + 8 * (5 * 3 + 2 + 4 * 3))", 9332820), + ("9 * (7 + (3 * 5 * 5 + 3 * 7)) + (5 * 3 + (4 * 7 * 7 + 8) * (3 * 7 * 5 * 6) * 8) * 5 + (2 * 7) * 4", 22174796), + ("4 * ((2 + 3 * 2 * 2 + 3) + 4 * 4 * 4 * 5 + (3 + 3 * 9 * 9 + 7)) * 9", 95508), + ("8 + 7 * 4 * 3 * (5 + 9 + 8 * 7 * 3)", 83160), + ("9 + (4 * (2 * 6 + 7) + 5 * 4 + 8 + (6 + 7 * 8 * 2)) + 9 + 5 + 8", 571), + ("3 * ((5 * 2 * 8 * 7 * 2 + 4) * (3 * 3 * 5 + 2) + 7 + 8) * 8 * 2 + 3", 2536467), + ("(8 * 2 + 5 + (4 * 9 * 7)) * 5 + (9 * 8) * (5 * (7 * 8 + 4 * 4) + 3)", 1728711), + ("((7 * 6 + 9 + 7 + 9 + 9) * 2 * 8 + (6 + 4 * 7 * 2 * 2) * 7 + (2 + 9 + 9 + 5 + 4)) * 5 * 2 + 7", 105017), + ("7 + 2", 9), + ("4 * ((2 * 6) * 5 * 5 + 9 * (7 * 7 * 3 + 8)) + 2", 191582), + ("6 * 8 + 5 + 4 * (5 + 8)", 741), + ("4 + 6 * (4 * 5 * 3 * 5 * 5 * 6) * 8 * 5", 3600000), + ("7 + ((6 * 6 + 2) + 7 * 7 + 7 * 9 * 6) + 6", 17401), + ("(7 + 3 * (2 * 5 + 3 * 9)) + 2 * 2", 2344), + ("6 + 3", 9), + ("2 * 8 * (3 + 8 * (4 + 6 * 4) * 8 * 2)", 112640), + ("8 * ((4 + 8 * 5 + 7) + 6 + (4 + 8 + 4 + 9 * 7 + 9) + 2) + 5", 2077), + ("(7 + 7 + 2 + 3 + 6 * 3) * ((7 + 5 + 8 + 5 * 6) + 4 + 6 * (3 + 3) * (4 + 6 * 9 * 6 + 4) * 7) * 3 * 9 + 5 + 4", 7402752009), + ("5 * 7 * (5 * (2 + 5 * 7 + 7 * 5) + 9) + 3", 49318), + ("8 + 2 * 4 * 3 + (8 + 3 + 4 + 3 + 2 * (4 * 5)) * 5", 2600), + ("3 + (8 * 3) * 7 + 4 * 5 * 2", 1930), + ("(7 * (7 * 2 * 7 * 3) * 3 + 2 + 7 * 6) * 4 * 6 + 6 + 6", 890364), + ("(5 + 2 + 2 * 8 + (2 * 9 + 7 + 3) + 5) * 9", 945), + ("(6 + (7 + 8 * 2 + 9) + (7 * 3 * 4 * 5) + 6 * 3 * 4) + (3 * 2 * 5)", 5682), + ("4 + 7 + (8 * 7 + (5 * 4))", 87), + ("8 * 2 * 5 * (9 + 4) + (3 * 7)", 1061), + ("(3 + 4 + 8 + 6 + 2) * 9 + 6 + 6 + 3", 222), + ("(9 + (3 * 4 * 5 * 8 + 5) + (5 + 8)) + 5 * ((2 + 5) + (7 + 9) * 2) * (6 * 3) + 8", 423944), + ("9 * (3 + 9 + 8 * (9 + 7 + 9 + 8 * 6) + 8 * 8) + 2", 285698), + ("7 * ((9 * 2 + 8 * 4 + 7) * 4 + 3 + (5 * 3 * 5 + 3 + 4)) * 5 * 7", 129605), + ("5 + 2 + (8 * 8) + 8", 79), + ("4 * (4 * 9 + (7 * 6 + 2 * 2 + 5 + 8) * 9 + 7) * 3 * 7", 104160), + ("9 + 9 + (4 * (8 + 2 * 5 * 9 + 9 * 2) * 4 * 7) + (6 + 2) * ((8 * 7) + 9 * (7 + 7 * 7) + 2 + 5 + 2) + 6", 656029124), + ("9 + 4 + (3 * 9 * 3 * 9) + (3 + (2 + 9 + 9 + 8 + 7) + 5 + 9 * 3) * 7 * (4 + 7 * 8 + 7 * (4 * 2 + 5 * 8 + 9 + 8) + 3)", 72276428), + ("6 + (2 + 6) * (6 * 2 * 2 + 7) * 4 * 6", 10416), + ("6 * (2 + (6 * 7 + 7 * 9) * 6) * 3 * 8 + 3", 382755), + ("8 + (5 + 4 + 6)", 23), + ("9 + 2 * (5 * 5 * 5) * 2 * 5", 13750), + ("4 * 4 * ((3 * 3) * (9 + 7 + 5) + 5 + 9) + 7 * (4 * 2 * 4) * 7", 729120), + ("((4 * 5 * 7 * 7 + 3) * 9) * (6 * (7 * 8 * 7 + 3 + 7) + (4 * 2 + 3 + 3) * 4 + 6)", 85904370), + ("4 * 2 + 3 + 2 * (2 + 2 * 2 * 8)", 832), + ("4 + ((3 + 8) * 7 + 2 + (9 + 4 + 9 + 3 + 4 + 6) * (7 * 5 + 8)) + 4 + 5 * 8 + 2", 39322), + ("(5 * 2) + 3 + (3 + 9) + 4 + 4 * 5", 165), + ("6 + (5 + 8 + 6 + (7 + 5 + 9)) + (3 * 5 + 8 * 3 * 4) * 4 + 4 + 5", 1297), + ("((7 + 4 * 6) * 7 * 2 + 6) * 7 + 8", 6518), + ("7 * 5", 35), + ("2 + 9 * 4 + 9 + 4 + (8 * 9)", 129), + ("5 + 5 * ((5 + 6) + 2 * 4) * (8 + 8 * 5) + 3", 41603), + ("5 * 5", 25), + ("4 * 3 * 4 + 3 * (7 * 9) + 4", 3217), + ("4 + 4 * (8 * 3 + 2 * 8 + 2) + 4 + 3", 1687), + ("(8 + 5 + 4 * 4 + 6 * 9) + 8 * 6 * 3", 12132), + ("8 + 6 + 3 + ((2 * 9 + 2) + (7 + 7 + 3)) + 6", 60), + ("(4 + 5 + 8) * 8 + (7 * 9 + 3 * 3 + 9 + (8 + 5 + 7 + 3 + 9)) + (3 * 3) * 8", 3072), + ("(4 + 4 + 4 * 6 + 4 + 9) * 6 * ((8 + 6 + 3 + 2 * 8 + 2) * 4 + 6 * 8 * 7) * 5", 88821600), + ("6 * 6 + 3 * (2 + 7 + 3) * 4 + 5", 1877), + ("((2 * 4 + 3 * 3 * 9 * 3) * 7) + 2 + 8 + 6 * 2", 12506), + ("5 * (5 * 4) + 6", 106), + ("((7 + 6) + 7) + 3 * 2 * 9 * 6 + 4", 2488), + ("6 + 8 + ((4 * 9 + 5) * 4) * (5 + 7 + 8 * 8 * 2) + 9", 56969), + ("8 * 4 * 8 * 9 * 2", 4608), + ("5 + 2 + (8 + 9 * 6 * 7 * 6) * 8", 34328), + ("6 * (9 * 5) + (5 + 2 + 6 * 8) * 6 * 6 * (4 + 7 + 8 * 8)", 2046528), + ("2 * 3 * 6 * 8", 288), + ("3 + (4 + 5 * 8 * 8) * 2 * (9 * (5 * 3 + 8 + 6) * 2 + (5 * 7 * 3) * (4 + 5) + 7)", 6542700), + ("6 * (5 * 4) * 5 + 4 + (6 + 2) + 6", 618), + ("2 * (4 * (7 + 2 + 3 + 3 * 8) * (9 + 3 * 3) + (6 * 8 * 5 * 7) + (6 + 5) + 7) * (3 + 8 + (5 + 4 + 8 + 6) * 3 + 2 + 3) * 8 + (3 * 3) * 9", 292413105), + ("(5 + (4 * 8 * 7) + 7 * (7 * 9 + 2 + 5 + 6)) + 4", 17940), + ("6 + ((3 + 9) * 4)", 54), + ("9 + ((4 + 4 + 5 * 6) * 8) * 2", 1266), + ("(4 + 2) * 3 * 3 + 3", 57), + ("5 + 2 + (8 + 7 + 5)", 27), + ("6 + (7 + 4 * 9 * (6 + 8 * 8 + 3) * 8)", 91086), + ("3 + 3 * 6 * 3 + (4 * (2 + 6 * 7) * 8)", 1900), + ("7 * 5 + 8 * 7 + (9 + 4 * (7 + 6 + 2 * 7 * 9) + 9 + 9 * 4) + (3 + 6 + 5 * 6 * 4 + 9)", 49858), + ("5 + (9 * (5 * 7 * 6 * 8) + (8 * 3) * 6 + (2 + 7 * 8)) * (9 + (5 + 7 * 2 * 6 + 9 + 7) + 4 + 8 * 3) * 7", 345666741), + ("(6 + 7 * 7 * 9 * 4) * 3 + (5 + 7) * 7 * 5 * 6", 2066400), + ("(9 + 6 * 5 + 3) * (2 + 6 + 6) + 4 * 6 + 3", 6579), + ("5 + 8 + ((9 + 8) * (3 * 3 + 8 * 8) * 2 + 3) * 6 * 4", 111360), + ("((3 + 9 * 2 * 8 * 7) * 7 * 8 + 3 + 7) * (8 * 9) * 5", 27098640), + ("5 + 3 + (4 * 4 * (8 * 8 + 4 * 4) + 4 + 5 * 6) * 4 + 2 + 7", 104705), + ("5 + ((6 + 4 + 9 + 3) * 6 + (2 + 4 * 9 + 4 + 7 + 7)) + 4 + 9 * 8", 1776), + ("2 + 4 * 7 * 5 * ((5 + 4 + 6) + 4 * 4)", 15960), + ("8 * 6 + (4 + 8 * 5 * 6 + 4 * 9) * 9 + (2 + 8)", 29926), + ("((8 + 3 * 2 * 6) * (7 + 8 * 8) * 9 + (2 + 5) + 4) * (2 * 9 * 5 + (9 * 4 * 2 + 7 + 8) * 2 + 2) * 6", 304531656), + ("4 * ((5 * 5 + 6 * 8 * 5 * 9) + 4 * (3 + 7 * 6 + 4) * 4) + 2 * ((9 + 8 + 9) + 9 * 2) * 8 + 4", 6401885284), + ("2 * 8 * 6", 96), + ("(7 + (7 + 8 * 9) * 7 + (5 * 8 * 6 * 9 + 6 * 4)) + ((5 + 9 * 6 + 7) + 8 + 7 + (8 * 7 * 4 + 5 + 2) * 5 + (9 + 3 + 9 * 2 * 6 * 3)) * (4 + 5 * 4) + (8 * (5 * 5) * 9 * (3 * 3) + 5) * 4", 1807076), + ("(6 + 5 + 5 * 5) * 4 + ((8 + 6 + 8) + 5 + 5 + 7 * 9)", 671), + ("9 * (9 * 2 + 4 * 2 * 4)", 1584), + ("4 + (6 + 2) * (4 + 2 + 2 * 5) + 2", 482), + ("5 * (6 + 8 + 5 * 2 * (7 * 2 + 2))", 3040), + ("((7 + 5) * 2 * (3 * 5 * 9)) + 7 * (7 * 5 + 9 * 9 * (5 * 9))", 57861540), + ("7 + 5 * (2 * 3 * 4 + 9 * 7 * 9) + (2 + 8 + (3 * 6) * 7 * 7 * (5 * 8 * 7 + 8 * 6 * 9)) * 5", 106811460), + ("9 * 3 * ((9 + 7) * 7 * (2 * 9 + 5 * 9 * 7 + 8) + 6 * 6 + 6) * (9 + 7 + 6 + 9 * 7)", 5736816414), + ("8 + 9 * 4 * ((7 * 3 + 6 + 6 * 7 + 9) + 8 * 5 * 2)", 168640), + ("3 * (3 * (5 + 5 + 5 * 2))", 270), + ("4 * 4 * 8 * 6 + (3 + (5 + 5 + 5 + 6 * 6) * 8 * 9 + 9) + 3", 10068), + ("(3 + 8) + 4", 15), + ("6 + 5 + 3 + ((2 + 5 + 6) + (9 + 5 * 4 * 9) + 6 * 7 + 5)", 3680), + ("(6 * 8 * (2 + 2 + 8 + 8 + 2) + 7 + 6 * 3) + ((7 * 3 * 9) + 2 * 4 * 4 + 2) + 5", 6270), + ("6 * ((6 * 8 + 3 * 9) + 2 * 9) + 3 * (6 + (3 * 7 * 4) + 4 * (6 * 8 * 3 * 7 + 3 * 8) * 6 * 7) * 6", 4769979979968), + ("5 * 8 * (7 * 7 + 4 * 7) + (2 * 4 + (3 * 2 * 4 * 9) + 4 + 2)", 15070), + ("(3 * 8) + 3 + 6 + (3 * 3 + 9 * 6 * 8) + 3 + 5", 905), + ("((6 + 5 + 7 + 3) * 7 + 9 * 5) + 9 + 2", 791), + ("3 + 2 * ((9 + 9) * 8 + 5 * (6 + 4 * 6) + 4 + 7) + 9 + 4 * 4", 179072), + ("5 * 6 + (5 + 6 * 8 * 5 * (8 * 2 + 7) * (7 * 6 * 2 * 2 * 7 * 6))", 71406750), + ("8 + 4 + 3 + (4 * 7) * 2 * (2 + (3 + 8 + 8 * 2 * 9))", 29584), + ("7 + 5 + 3 + ((9 * 9 + 2 * 8 * 6 + 5) * 2) + (3 * 7 + 6 * 4 * (8 * 6 + 8 + 8 + 7 * 3) + (9 + 3 * 8 * 6 + 4)) * (9 * 6 * 9 * 6)", 92078532), + ("5 + (2 + (6 * 3 * 3 + 9 * 8 * 8) + 3) + 9 * 6 + 6", 24312), + ("6 + (2 + (3 * 5 + 2 + 4)) + 7 * 9 * (8 * 9 * 6)", 139968), + ("((4 * 4) + 2 + 7 + (5 + 3 * 2 + 9 + 8 + 4) * 5) * (2 * (6 + 8 * 9 + 7) * 9 + (7 + 5 * 7) * 8) + 6 * 3 * 3", 55309014), + ("(7 * 5) * (5 + 3 + 5)", 455), + ("(2 * 6 * 9 + 9 + 6) + 9 * 8", 1056), + ("6 + (9 + 6 + 7 * 7 * 3 + (9 + 8 + 2 * 3 + 4 + 7)) + 9 * ((2 * 5 + 4 * 6 * 6 * 7) + (6 + 5 * 4 * 5 * 8) + 9) + ((5 + 7) * 5 * 4)", 2887105), + ("(7 * 2 + 7 * 8 * (7 + 6)) * 2 * 2 * 2", 17472), + ("(6 + 5 * 2 + 3 + 5) * 8 + 4 + 2", 246), + ("3 + 4 + 3 + 7 * ((2 * 8 * 8 * 3 + 4 + 4) * 8 * 2 * 9 + 4 + 9)", 959837), + ("7 + (5 * (7 * 9 + 7 + 2 * 7) + 9 + 3 + 5 + (8 * 9))", 2616), + ("8 * (2 * (8 + 4 * 3) + 7 * 7 + 5 + 8) + 3 + 6 * 8", 36296), + ("(8 + 3 * 5) * 6 + 2", 332), + ("3 + 8 * ((3 * 8) + 8 + 5)", 407), + ("5 * 9 * 5 + ((5 + 6 + 7) + 4) + ((5 + 8 + 3 + 4 + 3) * 8 * 3)", 799), + ("7 * (6 + 4 + (7 + 4 + 4 + 6) * 3 * 3 + 2) + 7 + 8 + 4 + 3", 1989), + ("2 + ((3 + 8) + 2 + 9 + 4 * 3)", 80), + ("4 + 9 * 3 + 9", 48), + ("(7 + (7 * 4 + 7) * (6 * 6 * 9 * 4) * (2 + 5 + 8 + 3)) * 3", 2939328), + ("(8 + 2 + 4 * 7 * 3) + 2 * ((6 + 2 + 2) + 7 * 8 * 8 * 5 * 8) + 7 + (5 + 8 + 2 * (9 * 9) + 3)", 12883145), + ("8 * 2 + 6 * ((5 * 3) * 6 * 2 * (7 * 2 + 4 * 4 + 9)) + 4", 320764), + ("4 * 3 * (8 + 7 * (2 + 4 + 7 + 4 + 3)) * 9", 32400), + ("7 + (6 + (6 + 2) + 8 + 9 + 3) * (3 + 9 * (3 + 5 + 6 + 7 + 6) + (8 * 8 * 7) + 5 + 8) * 9 * 2 * 8", 4634640), + ("3 + 6 * (3 * 5) * (9 + 4 * 3) + (5 * 6 + 3) * 6", 31788), + ("6 + (5 * 6 * 7 * (2 * 4) * 9) * 7 * 7 * 6 * ((2 * 6 * 2 + 3) + 7 + 9 * 2 + 6 * 6)", 2454768288), + ("(4 * 4 * 2) * (4 + 3)", 224), + ("7 * 8 * 9 * 6 * 2 + (8 * (8 + 6 + 6) + 3 + 5 + 2)", 6218), + ("(9 + 2 + (8 * 9 * 5 + 7) + 3) * 9 * (7 + 8 + 3 * 4 + 5) + 8 * (5 * 5 + (4 + 5 + 5 * 3 + 8) * 4) + (7 + 3 + 7 + 4)", 79212321), + ("8 * (2 * 2 + (8 + 7 * 9 * 2) * (8 * 2 + 5 + 4) * 9 + 8) * 6 + 3 + (4 * 3) * 7", 20717193), + ("(5 + 7 + 9 * 6 + 4) * 9", 1170), + ("(3 + (5 + 3 + 4) * 3) + 3 + 8 * ((5 * 8 * 6) + (8 + 6 * 4 * 4 + 8) * 8 + 2 * 4 + 7) + (2 * (5 * 5 * 3) * 2 * 9)", 849364), + ("(8 + 2 * 8) + 9 * 8 + 7", 719), + ("4 * (2 * 3 + 8 + 3 * 5) * ((3 * 3 * 8 + 7) * (7 + 5 + 8) * 6) + (9 * 5) + 8", 3223253), + ("7 * (6 * 3) + (7 + 8 + (2 + 5) * 3) + 7 + 6", 205), + ("5 + 9 * 2", 28), + ("9 * 2 + 8 * (3 * (6 * 7 * 7) * 8) + 9", 183465), + ("((2 + 8 + 7 + 6) + 4 * (6 * 5 + 7 * 4 + 5) * 8) * 9 + (7 + 2 * 5 * 5 * 3 * 3) + 3", 299460), + ("6 + 3 * 3 + (8 + 4)", 39), + ("(8 + (8 * 2) + 4) * 5 * 4 + 5", 565), + ("(5 * 5 * 5 * 8 + 8 + 7) + (6 + 9) + 4 * 3 + 4", 3106), + ("(3 + (2 * 9 + 2 + 9 + 4) + 2 + (5 + 3 + 2)) * 5 * 3 + 5", 725), + ("6 + 3 * ((8 + 7 * 8 * 7 + 9) + 3 + 3 + 9 * (7 + 5 + 9) * 9) + 5 + (7 * 8 + (5 * 7 + 5 * 9 + 4))", 1470089), + ("(4 * 9) + 7 * 9", 387), + ("(3 + 7) + 2 + (5 * 2 * 4 * 6 + 5)", 257), + ("5 * 4 * 2 * ((9 * 4 * 7) * 2 * 3) + 3 + 6", 60489), + ("(5 + 2 * 7 * 7) * (4 * (3 * 8 * 2) * 3 * (2 + 3 * 8)) + 4 * 6 + 8 + 7", 47416359), + ("7 * 4 + 2 + (6 + 2 * 5 * 2 + 6 * 9) + 7 * 2", 1622), + ("8 + (4 * 4 * 7 * 9 + 5 + 6)", 1027), + ("(4 + 7 + 8 * 6) + (3 * 5 + 4) + 4", 137), + ("6 + 2 + 3 + 2 * 3 + 9", 48), + ("6 + ((7 * 6 + 5) + 4 + 9 + (5 + 6 * 6 + 5 * 2 * 9) * (2 * 9)) + 9 + 5 * 2", 48208), + ("8 + 3 * 4 * 3 * (3 * 9 * 2)", 7128), + ("9 * (7 * 7 * 4) + 3 + (9 + (6 + 6 + 2 + 3 + 5 + 6) * (3 * 7 * 9 * 3) * 6 + 8 * 3)", 379413), + ("5 * (9 * 2 + (6 + 2 * 5) + 5)", 315), + ("4 + 3 + 9 + 7 + 5 + (3 * (2 + 8 * 6) * 4 + 2)", 750), + ("3 * ((2 + 5 + 2 + 6) + 3 + 4 + (7 + 9) * (7 + 8 * 4 + 9) * 3) + 9 + (8 + 6)", 23621), + ("8 + 4 * 4 + 7 + ((3 * 9 * 2 + 2 * 8) + (3 + 6 + 2 * 5 * 4 * 8) * 8 * 8)", 141367), + ("4 + 4 * ((5 + 3 + 2 * 4 + 7 * 8) * (5 * 6 + 9) + 5 * 3)", 352056), + ("7 * 8", 56), + ("3 + (5 * 3 + (5 * 9) * 2 + 4) + 2 + 3", 132), + ("6 + 8 + 3 + (2 * (6 + 5 + 3 * 8 + 9) * 3 * 9) * (6 * 8)", 314448), + ("2 * 9 * 4 * (6 * 2 * 6 * 3 * 8) * 4", 497664), + ("6 + (3 * 4 * 7 + 5 * 5 + 2) * 4 + (6 * 5 * (6 + 2 + 9 + 6 * 8) * 2 + 5) + 4", 12861), + ("6 * ((6 + 4) + 9 * 5 * 3 + (9 * 5)) * (4 + 2 * 7 * (4 * 9 * 3 * 8) * 4) + 3", 287400963), + ("7 * 2 + 6 * (3 * 6 + 6 * 5) * 7 * 7", 117600), + ("3 + 8 * (3 * 2 + (9 * 3 + 8 * 7 + 8 + 4) + 6 + 3 + 5) + (6 + 8 + 7 * 3) * 9 * (4 * 3 * 6 + (9 + 9 * 9 * 2 * 6) + 4 + (6 * 4 + 5 + 9 + 9 + 7))", 58051260), + ("4 * 8 * (8 * 5 + 3 * 6 * 7 + 9) * 9", 522720), + ("8 + 4 * 9 * 4 * 8", 3456), + ("(3 * 7 + (5 * 2 + 7 + 5 * 6) + 9 * 5) * 6 + 6 + 2 * 5", 24340), + ("(8 + (4 * 8 * 8) * 7) + 4 * 8 * ((4 * 4 * 5) + 8 + 8 + 2) + ((6 * 8) * 8 * 8 * 8 * 2) + 8", 1501128), + ("4 * (6 + 2 + 6 + 9 + 7) * 4 + 7 + 9", 496), + ("5 + (2 + 6 * 8 + 5) + (6 + (8 + 9 + 5) * 4 * 3) * 4 * 5", 8200), + ("9 * 6 + 5 * (4 + 2 + (7 + 9 * 6)) + 5 + 6", 6029), + ("8 + ((8 + 3 + 5 + 3 * 8) + 5 + 3) * 4 * 3", 2016), + ("2 + (3 + 5 * (8 * 2) + 8 + 5) * 8 + 4 + (8 + (9 + 8) + 8 * 9 * 7) + 9", 3236), + ("7 * (4 * 2 + 5) * 8", 728), + ("3 + 5 + 7 + (6 + 2 * 7 * 7 * 5) + ((3 * 4 + 8 * 5 + 6) + 4 * 5)", 2525), + ("(9 + 6) * 7 * (9 + 3 + 4 * (8 + 8 * 3 + 6 + 8 * 2))", 208320), + ("2 + (6 + 5 + (7 * 5 + 5 + 9 + 7 + 6) + 2 + 2 * (8 + 8))", 1234), + ("4 * 9 + 2 * 9 + 9 + 8", 359), + ("((2 * 7 * 5) * 8) * 8 + 4 + 8 * 4", 17968), + ("7 * 5 + (8 + 9) * 3 * 6", 936), + ("8 + ((9 + 7 + 8) + (8 * 5) + 2 + 7 + 3 + 3) + 3", 90), + ("6 * (5 * (7 + 6 + 5 * 9 + 8 * 5) * 6) + 7 * 9 * ((2 + 5 * 8 * 2 + 3) * 3 + 7 + 5 * 3) * 2", 2949668946), + ("3 * (3 + 5 + 4) * 6 * 9", 1944), + ("6 + ((8 * 5 + 3 + 9) * (5 + 2 * 4 * 5 + 5) + (2 * 3) + 4 + 7) + 7 + 8 * 6 + 4", 45472), + ("((9 * 2 + 8 * 9) * 4 + 5 * 3 * (8 * 2 * 7)) + (7 + 4 * 2 + 6) * 9", 2845836), + ("(6 * 5 + 7 * (5 * 5 + 4 + 7 * 7 + 6) + 2) * ((4 + 6 * 5 * 6 + 7) + 9 + 5) * 7 * (4 + 7 * 6 + 5) * 5", 7616296380), + ("8 * (3 * 6 + 5) + 9 * (9 + 6 * (4 * 6) + (7 + 8 + 5 + 3)) * (3 * 7 * 8 * 2) + 9", 24836793), + ("8 * 3 + (5 + 3) + 8 * 4 + (4 + (7 + 9 * 5 * 3) * 6 + (7 + 5 + 4) + 8 * 8)", 12064), + ("2 * 3 + ((8 * 8 * 8 + 4) * 7 * 7) * 5 * 8", 1011600), + ("(6 * (7 + 3 + 8 * 5 + 2) + 2 * 4 + 5 * 5) * 2 * (8 + 3 + 3 + (6 + 4) * (9 * 3)) + 6 * 9", 129528774), + ("8 * (7 * 6 * 8 * (3 * 6 + 4 + 6 + 2 + 2) * 6) + 8 * 8 * 6", 24772992), + ("(7 * 5 * 5) * 7 * ((3 + 6 + 3 + 4 + 2 * 2) * 8 * (7 + 9 * 9 * 9))", 457228800), + ("((5 + 7 * 9 * 2 + 7) + 7 + 5 * 6 + 3) * 6 * 2 * 3", 50868), + ("5 + (5 * (9 + 9) + (7 * 7 * 4 + 2) * 3)", 869), + ("((8 * 8 + 2 + 8 * 9) * 5) + (2 + (9 * 6 + 9 + 7) * 7)", 3834), + ("3 + ((7 * 4 * 4 * 5) * (8 + 3 * 4 + 4 * 9) * 5 * 3 + 7) + 4 * 2 * 7 * (3 * 6 * 6)", 5486766768), + ("((9 * 7 + 6 + 7 * 9 + 2) * 4 + 3 + 4 + 4 * 6) * 8 + (4 + (8 + 2 * 6 * 4 * 3)) + (5 + 2 * 6 * (4 * 5 + 4 + 2)) + 4 * (6 + 3 * (2 * 2 * 6 * 3) + 8 + 4 * 5)", 442398000), + ("(5 * (7 + 9 + 5) + 6) * 5 * (6 + 7 * 9 + 6) * 9 * 5 + 9", 3071934), + ("(4 * 4 * 6 * (5 * 8 + 3 + 8) + 5) + (9 * (3 * 9 + 3 * 9) + 5 + 8 + 2 * 3) * 3 * 2 + 8 * 5", 367120), + ("7 + 5 * (3 + 8 + 6 * 9 + 5 * 8) * ((9 * 9 * 4 * 9 + 3) * (6 + 9 * 5) * 8 + 4 + 6)", 26565386880), + ("7 + 8 * ((3 + 7 * 5) + 3 * 2 + 2 * 3 + 7) * 9 + 8 * 7", 312851), + ("3 + 4 + (5 * (9 + 9 + 3 * 6 * 4 * 3) * 4) * (4 * (7 * 6 * 3 + 5 * 2 * 9) + (7 * 3 + 5))", 286076126), + ("3 * (2 + 8 + 2) * 6 * (4 * 4)", 3456), + ("2 + 2 + 3 * 5 + (3 + (6 + 2) + 9 + 7) * (3 * 3 + 5 + 8 + 7)", 1798), + ("4 + 5 + 6 * 6 * 6 + (3 * 2 * 3 * (2 * 6 + 9) + 6 + (5 + 2 + 9 * 6))", 1020), + ("((4 + 9) + 2) * 7 + 3 * 4", 432), + ("2 + 6 * ((2 * 7 * 8 * 3 + 8 + 4) + 9 + 6 + 9 * 2 + 9) + 7 * 6", 36186), + ("9 * 7 + ((2 + 5 * 2 * 7 * 8) + 6 * 2 + 3 + 4) * 5 * (5 + 2 * 7) * 8", 3234000), + ("4 * (8 + 5 * 6 * 8) + 2 + 3 * 7", 17507), + ("(2 * 2) * 9 * 6 * 3 + 9", 657), + ("9 + 2 * (7 + 5 + 7 + (3 + 7 * 2 * 2 + 3) * 3)", 2046), + ("(2 + 5 * 9) * (4 * (9 + 2 * 4 + 3 + 2) * 2 + 8 + (6 * 7 + 9 + 5)) * 3 + 8", 86192), + ("(6 * (6 + 7 * 7) + 7 * 6 * 7) + ((7 * 6 * 4) * 6 * (8 + 8 + 5 * 7 * 8 + 8) + (4 + 5 * 5 + 5 + 3 * 9) + 8)", 1217183), + ("9 * (6 * 9 * (8 * 2 * 6) + 4 * 4)", 186768), + ("(5 + 5 * 5 + 8) * 6 + 5 * 2", 706), + ("4 + ((8 + 7) + 5) + 6", 30), + ("9 + 6 * (7 + 4 + (9 + 4 + 2 + 8)) + (8 * 5)", 550), + ("(3 * 8 + (6 + 9 * 8 + 6)) + 3 + 4 * 8 + 5 * 3", 3783), + ("3 + 6 * (7 * 8 * 6 * (5 + 8 + 6) + 5 * 4) * ((8 + 9 + 6 * 8) * 9 + 6 * 6 + 2 * 2) * 4", 18352479168), + ("7 * (6 * (5 * 5 + 9 * 7 + 5 + 9) + 8 + 9 + 2 * (6 * 7 * 7)) * 3", 9452394), + ("4 + 2 * (5 * (3 * 8 * 3) * (5 + 9 + 8 * 9) + 9 + 7) * 7 + 5", 2994437), + ("6 * 5 * (5 * 3 * 9 * 4 * 2) * 9 + 7 * 4", 1166428), + ("3 * (4 * (7 + 2) + 4 + 6 + (3 + 6 + 6 * 5)) + 5", 368), + ("7 * 7 * (5 + 9 + 9) * (8 * 6 * 5 + 4 * 2)", 549976), + ("6 + (9 * 4) * ((4 * 2 * 4 * 4 * 6 * 7) + 9 + (2 * 9 + 9 + 9)) + 2 + 4 + 4", 227692), + ("9 * (6 * 5 + 9 * 2 * 4) + 7 + 8 * 8 + 9", 22593), + ("(6 + 7 + 8 * 2 * 4) * 5 + 2 + 2 * 5 + 6", 4226), + ("8 * 7 * (9 * 2 * 4 + 3 + 4 * 4) + (8 * 8 + 9 + 6) + ((7 * 7 + 2 * 9) * (2 * 8 + 2) * 6 * 6) + 8", 315215), + ]; + // Find shortest failures first, that should make it easier to understand. + ts.sort_by(|l, r| l.0.len().cmp(&r.0.len())); + for (input, want) in ts { + let got = parse_part1(&lex(input)); + eprintln!("got {}, want {} for {}", got, want, input); + assert_eq!(got, want, "got {}, want {} for {}", got, want, input); + } + } + + //#[test] + fn comprehensive_part2() { let mut ts = vec![ ("(7 * (3 + 8 + 8 + 7) + (6 + 8 * 2 + 5 + 2 * 6) * (5 + 2) * 9) + ((7 * 4 + 8) * 6 * 8 + 9) * 7 * 2 * 2", 9896040), ("6 * ((9 + 4) * (6 * 7 + 5 + 8 * 2))", 18720), @@ -564,7 +957,7 @@ mod tests { // Find shortest failures first, that should make it easier to understand. ts.sort_by(|l, r| l.0.len().cmp(&r.0.len())); for (input, want) in ts { - let got = parse(&lex(input)); + let got = parse_part2(&lex(input)); eprintln!("got {}, want {} for {}", got, want, input); assert_eq!(got, want, "got {}, want {} for {}", got, want, input); } diff --git a/2020/src/lib.rs b/2020/src/lib.rs index 39b1f16..6d721d2 100644 --- a/2020/src/lib.rs +++ b/2020/src/lib.rs @@ -7,7 +7,7 @@ pub mod day14; pub mod day15; pub mod day16; pub mod day17; -//pub mod day18; +pub mod day18; pub mod day19; pub mod day2; //pub mod day20;