diff --git a/2022/inputs/day02 b/2022/inputs/day02 new file mode 100644 index 0000000..0b2139a --- /dev/null +++ b/2022/inputs/day02 @@ -0,0 +1,2500 @@ +C Y +B Z +B Z +C Y +B Y +C Z +C Z +C Y +B Z +C Z +C X +C Y +C Z +C Y +C Y +B Z +A Y +C Z +C Z +C Z +B X +B Z +C Y +A X +C X +C Z +C Y +C Z +C Z +C Z +C Y +C Y +A X +C X +C Z +B Z +B Z +B Z +B Z +C Z +C Y +C Z +B Z +A Y +A X +C Z +C Y +C Z +C Y +C Z +A X +C Z +C Z +C Z +C Z +C Y +C Y +C Z +C Z +C Z +C Z +B X +C Y +B Y +B X +A X +C Y +C Z +C Z +C Y +C Z +C Z +A Y +C Y +C Z +C Y +B Z +C Z +C Y +B Z +B Z +C Z +C Y +C Y +C Z +C Z +C Y +C Z +C Y +C Y +C Y +C Y +B X +C Z +C Z +C X +C X +C Z +B Z +A Y +C Y +A Y +C Y +C Z +C Y +C Z +C Y +B Z +C Z +C Z +C Y +A Y +C Z +B Z +C Z +C Z +C X +C Z +C Z +C Z +C Z +C Z +C Z +B Z +C Z +C Y +B Z +C Y +C X +A X +C Z +A Y +C Y +C Z +B Z +C Z +B X +C Z +C Y +C Z +B Z +C Z +C Z +C Y +C Y +C Y +B Z +C Y +C Y +B X +C Z +B Z +B Z +C Z +C Z +C Z +C Z +C Z +A Y +C Y +C Z +C Y +B Z +B Z +C Y +C Z +B Z +C Y +C Y +C Z +B Z +C Y +C Z +C Y +B Z +C Z +A X +C Z +C Y +C Z +B Z +C Z +C Y +C Y +C Y +C Y +C Y +C Z +C Z +A Y +C Z +C Z +C Z +C Y +B Z +C Z +B Z +C Z +C X +C X +B Z +C Y +C X +C Y +B Z +C Y +C X +C Z +C Z +C Y +C Z +C Z +B Z +A X +C Y +C Z +C Z +C Z +C Y +C Y +C Z +C Z +C Y +C Z +A Y +C Z +B Z +C Z +A Z +C Z +C X +B Z +C Y +C X +C Z +C X +C Y +A Y +C Y +C Y +C Z +C Z +C Y +B Z +A X +C Z +C X +C Y +B Z +C X +C Z +C Y +C Z +C Y +A Y +B Z +C Z +C Y +C Y +C Z +B Y +C Y +B X +C Y +C Y +C Z +C Z +C Z +C Y +C Y +C Y +B X +C Z +C Z +C Z +B X +A Y +C Z +C Z +A Y +B Z +C Z +A X +C Z +C Z +C Z +C X +C Y +C Y +C Z +C Z +C Z +C Z +C Z +C Z +C Y +B Y +C Z +C Z +C Y +C Z +C Z +C Y +C Z +A Y +C Y +C Z +B Y +A X +B Z +C Z +C Z +C Z +A Z +C Z +B Z +B Z +C Y +B X +C Z +C Y +C Z +C Y +A Y +C Z +C Z +C Z +B Z +B Z +C Y +C Z +C Y +C Z +C X +C Z +C Y +C Y +C Y +C X +B Y +C Y +B Z +C Z +C Z +C Y +C Y +C Z +C Z +C Y +C Y +C Z +C Z +C Z +C Y +C Y +C Z +C Z +C Y +B Z +C Z +C X +A Y +B Z +C Z +C Z +B Z +C Z +B Z +C Y +C X +C Z +C Z +A Y +C X +C Y +A X +C Z +C Z +C Z +B Z +C Z +C Y +B Z +B Z +C Z +C Z +A Y +C X +C Z +B Z +C Z +C Z +C Z +B Z +C Z +C Z +B Z +C Z +C Y +C X +C Z +C Z +A Y +C Z +C Z +C Z +A Z +B X +C X +C Y +C Z +C Y +C Y +C X +C Z +B Z +C Z +A Y +C Y +C Z +A X +B Z +B Z +A Y +C Z +C Z +C X +C Z +C Y +C Y +C Z +C Y +B Y +C Y +C Z +C Y +C Z +C Z +C X +C Z +C Y +C Z +C Y +A X +C Z +B Z +B Z +C Y +C Y +C Y +C Y +C Z +C Y +A X +C Z +B Z +C Y +C Y +C Z +C Z +C Y +C Z +C Z +C Z +C Z +C Z +B Z +C Z +C Y +C X +C Z +C Z +B Z +C Z +C Z +C Z +B Z +C X +B Z +A Z +C Z +C Y +C Y +C Y +B Z +C X +A Y +C X +C Y +B Z +C Y +B Y +A X +B Z +C Z +B Z +C Y +B Z +B X +C Y +C Z +C Y +C Y +C Z +B Z +C Z +C Z +C Y +C Z +B Z +B Y +C Z +C Y +A Y +C Z +C Z +A X +C Z +B Z +C Z +A Z +C Z +C X +C Z +C Z +C Z +C Z +C Z +C Z +B Z +C Y +B Z +B X +C Y +C Z +B Z +C Z +C Y +C Y +C Y +B Z +B Y +C Y +C Y +C Z +C Z +C Z +B Y +C Y +C Y +C Y +C Z +A X +C Y +B Z +C Z +A X +A X +C Z +C Y +B X +C X +B Y +C Y +C X +A Y +C Z +C X +C Z +B X +A Y +C Y +C X +B Z +C Y +C Z +C Z +C X +C Y +C Z +C Z +C Z +C X +A X +C Y +A Y +C Z +C Z +C Z +C Y +C Y +C Z +C Z +C X +C Z +C Y +B Z +B Z +C X +C Z +B Y +C Z +B Z +C Z +C Z +B X +C Y +A Y +C Z +C Z +A Y +C Z +C Y +C Y +C Z +C Z +C Z +C Z +B Y +C Y +C Y +C X +C Z +C Z +C Z +B Y +A Y +A X +A X +C Z +C Z +C Y +A Y +C Z +C Z +B Z +C Y +C Z +C Z +A X +C Z +C Z +C Z +C X +C Y +C Z +C Y +A X +C Y +C Z +A Y +C Z +C Z +B Z +B Z +C Z +A Y +A X +C Y +C Z +C Y +A Z +C Y +A Y +B Z +C Z +C Z +C X +A Y +C Y +C Y +C Y +B Z +B X +A X +C Y +B Z +C X +C Z +C Z +C Y +C Y +C Y +C Z +C Z +A Y +C Z +C Z +C Z +C Z +C Y +B Z +C Z +C Z +B Z +C Y +A Y +C Z +C X +B Z +C Z +A X +C Y +A Y +C Z +C Y +A X +A X +B X +C Y +C Z +C Z +C X +B X +C Z +C Z +A X +C Z +C Z +B Z +C Z +C Y +C X +C Z +A X +C Z +C Y +C Z +C Y +B Z +C Y +A X +C Z +A X +C X +C Z +B Z +C Y +C Z +B Z +B X +C Y +C Z +C Y +B Z +C Y +C Z +B Z +B Z +C Y +B Y +C Z +C Y +B Z +B X +B Z +A Y +C Z +C Y +B Z +C Z +C Z +C Z +C Z +C Y +C Z +C X +C Z +C Z +C Y +C Z +C Z +C Z +C Y +B X +C Y +C Z +C Y +C Z +A Y +C Y +C Y +B Y +C Z +C Z +B Z +A Y +C Y +C Y +A Z +B Z +C X +B Z +B X +C Z +C Y +C Y +C Y +B Z +C Z +B Z +C Z +C Z +A X +C Z +B X +C Y +C X +C Z +C Y +C Z +C Z +B Z +C Z +C Y +A X +C Z +C Y +C Z +B X +C Y +C Z +C Y +C Y +C Y +A Y +B Z +C Z +C Z +C Z +C Z +B Z +C Z +C X +B X +B Z +A X +C Y +B Y +C Z +C Z +C X +C Z +B Z +C Y +C Y +B Y +C Y +C Z +C Z +C Y +A Z +C Y +B Z +B Z +C X +C X +C Y +C Z +C Z +C Z +C Z +A Y +C Z +B Z +A Y +C Z +C Y +A X +B Z +C Z +C Z +C Z +C Z +B Z +C Y +B Z +C Y +C Y +A X +B Z +C Y +B Z +B Z +A Z +A Y +C Y +C Y +C Z +C Z +A X +C Z +C X +C Y +C Z +C Y +C Z +C Z +C Z +C Y +A X +C Z +C Y +C Z +C Z +C Y +C Z +C Y +C Y +A X +B Z +C Y +C Z +C Z +C Y +C Y +C Z +C Z +A Y +C Y +B Z +B Z +C X +B Z +B Z +C Z +B Z +C Z +C Y +C Y +C Y +A Y +C Z +C Z +C Y +B X +C Y +C Y +C X +C Y +C Z +B X +C Z +B Z +C Y +C Z +C Z +B Z +C Z +C Y +C X +B Z +C Y +C Z +C Z +C Z +A Y +C Z +C Z +C Y +C Z +C Y +C Y +C Z +C Y +A X +C Y +C Z +C Z +C Z +C Y +C Y +C Z +B Z +C Z +B Z +C Z +C Y +A Y +C Z +C X +C Y +C Y +B Z +C Z +C Z +B Z +C Y +C Y +C Y +C Z +C Z +B Z +C Z +B Z +B Y +B Z +A Y +C Y +C Y +C Z +C Y +C Z +C Y +B Z +C Z +C Z +C Z +C Z +B X +B Z +C Z +B Z +C Y +A X +C Y +B Z +B Z +B Z +C Y +B Y +B Z +C Z +B Z +B Z +C Z +A Y +C Z +C Z +C Z +B Z +C Z +C Z +A Y +B Z +A Y +A Y +C Y +C Z +C Z +C Z +C Y +C Z +C Z +B Z +C Y +C Y +A X +C Y +B Z +C Y +B Z +C Y +A X +C Z +C Z +C Y +C Z +B Z +C Y +C Z +B Z +C Y +B Z +C Z +C Y +C Y +C Y +C X +C X +C Z +C Z +A Z +B X +C Y +A Y +C X +A Y +C Y +B Y +A X +A X +C Y +C Z +C Z +B Z +B Z +C Z +B Z +B Z +B Z +C X +C Z +C Z +B Z +C Z +C Y +C X +B Z +C X +B Z +C Z +C Z +B Z +C Y +C Z +C Y +B Z +B Z +C Y +A X +C Y +C Z +B Z +C Z +C Y +C Z +C Y +C Y +C Z +C Y +C Z +C Z +A Y +C Y +C Y +C Y +A Z +B Z +C Z +C Y +C Z +C Y +B X +C Z +A X +B Y +C Z +C Z +C Z +C Y +C Z +C Z +C Z +C Y +B Y +C Y +C Z +C X +C Y +B Z +A Y +B Z +C Y +C Y +C Z +C Z +A X +C X +B Z +C Z +B Z +B Z +C Z +C Y +C Y +C Y +B Z +C Y +A Y +C Z +C Z +C Z +C Z +C Z +B Z +C Z +C Z +C Z +A X +A X +C Y +B Y +C Z +B Z +B Z +A Y +C Z +B Z +C Y +C Z +B Z +C Z +C Y +C Z +C Y +C Z +A Y +C Z +C Z +B Y +A Y +C Z +C Y +B Z +C X +A Y +B Z +C Z +B Y +C X +C Y +C Y +C Z +C Y +B Y +C Z +B Z +C Y +C Y +C Z +C Z +B Z +A Y +C X +C Y +C X +B Z +C Z +C Z +C X +C Y +B X +C Y +C Z +C Y +C Y +C Z +C Z +B Z +C Y +C Y +A X +B Z +B Z +B Z +B Z +C Y +C Y +C Z +A Y +B Z +C Y +C Y +C Y +C Y +C Y +C Z +C Y +C Z +C Z +C Y +C Y +C Y +C Z +C Z +C Z +C Z +C Z +A X +C Y +B Z +C Y +A Y +C Z +B Z +C Y +A Y +C Y +B X +C Y +C Z +B Z +C Z +C Z +B Z +C Z +B Z +C X +C Y +B Z +C Z +B Z +A Y +C Z +B Z +C Y +C Y +C Y +C Z +C Z +B Z +C Z +B Z +A Y +C Y +B Z +B Z +C Z +C Y +C X +C Y +C Z +C Z +C X +A Y +A Z +C Z +A Z +C Z +C Z +C Z +C Z +C Y +C Z +C Y +C Y +C Y +A X +C Y +C Z +C X +C X +C Y +A Y +C Y +C Z +C X +C Z +B Z +C Y +A X +C X +C Z +C X +C Y +C Z +B Z +C Z +B X +C Y +C Z +A Y +C X +B Z +B Z +C Z +C Z +C Z +B Z +C Z +B Z +C Z +B Z +C X +A X +B X +C Y +C Z +C Y +C Z +C Z +B Y +C X +B Y +A X +A X +C Y +C Z +C Y +C X +B Z +C Z +C Z +C Z +C Z +C Y +C Z +C Y +C Z +C Z +C Z +C Y +C Y +C Z +B Z +B X +A X +B Z +C Z +C Z +B Z +B Z +B Z +C Y +C Y +C Y +C Y +C Z +B Z +C Y +C Z +C Z +C Y +B Z +C Z +C Z +C X +C Z +C Y +C Y +C Z +C X +C Z +C Z +B Z +B Z +C Y +A X +C X +C Y +C Z +C X +C Y +B Z +C Z +B Z +C Y +C Y +C Z +C Z +C Z +C Z +C Z +C Z +C Y +C Y +C Z +A X +C Z +C Z +C Z +C Z +C X +C X +C Z +B X +C Z +C Z +C Z +C Z +C Z +A X +C Z +C Y +C Y +B Z +B Y +C Z +C Z +A X +C Y +B X +B Z +C Z +C Y +C Z +B Z +C Z +C Z +C Y +C Z +C Z +C Z +C Z +C Z +B Z +C Y +C Z +B Z +C Y +C Y +C X +C Y +A X +C Z +C Y +C Y +C Z +C X +C Z +B Z +B Z +A Y +B Z +C X +C Y +C Z +C Y +B X +B X +C Y +C Z +C Z +A X +C Z +C Y +C Z +C Z +B Z +B Z +C Z +C Z +C Z +C Z +A X +C Y +A Z +C Y +C Z +B Z +C Y +C X +C X +A X +C Z +C Y +C Z +C Z +C Y +B Z +C Y +C Y +C Z +C X +B Z +C Y +C Y +C Y +C Z +B Z +B Z +B Z +B Z +C Z +B Z +B Z +B Z +C Y +B Z +B Z +A Y +C Z +C Z +C Y +B Z +C Y +C Y +C Y +C Y +A X +C Z +A Y +C Y +C Y +C Y +C Z +B X +C Z +B Z +C X +C Y +B Z +C Y +C Z +C Z +C X +B Z +B Z +C Y +B Z +C Y +C Z +C Z +C Y +A Y +C Y +A Z +B Z +C Z +B Y +C Y +C Y +B Z +C Y +C X +C Y +A Y +B Z +C Y +A Y +C Y +C Y +B Z +C Z +C Y +C Z +C Y +C Z +C Z +A X +A X +C Y +B Z +C Y +C Z +C X +A X +C X +C Z +C Z +B Y +C Z +B Z +C Y +A X +C Z +B Z +C Z +C Z +C Z +C Y +C Y +C Z +B Z +C X +B Y +B Z +B Z +C Y +B Z +C Z +C X +C Y +C Y +C Z +C Y +C Y +B X +B Z +B Z +B Z +B Z +C Z +B X +C Z +C Z +A Z +C Z +A Y +C Z +C Y +C Y +B Z +C X +C Y +C Y +B Y +C Y +B Z +C Y +C Y +A X +B Z +C Z +A X +C Y +C Z +C Z +A Y +C Z +C X +C Z +C Y +C Z +C Y +C Y +C Z +B Z +A Y +C Z +B Z +C Z +C Z +A Z +C Z +C Y +C Z +C Z +C Z +B Z +A Y +C Y +C Y +C Y +C Z +B Y +B Z +C Y +C Z +C Z +C Y +C Y +A Z +B Z +C X +B Z +C Z +C Y +A Y +B Z +C Y +C Y +B Z +C Z +C Z +C Z +B Z +C Z +C Z +C Z +C Z +C Z +A X +A X +B Z +C Z +C Z +C Z +B Z +C Z +B X +C Y +C X +C X +C Y +C Z +C Z +A X +A X +C Z +C Z +C Z +C Z +C Z +C Y +A X +C X +C Y +C Y +C Y +A X +C Y +B Z +C Z +C Z +A Y +C Y +C Z +C Z +B Z +C Y +C Y +C Y +C Z +B Z +C Y +B Z +C X +C Y +A Y +C Y +B Z +B Z +C Z +C Z +A X +B Z +C Z +C Z +C Z +C X +C Y +C Y +C Z +C Y +C Y +B Y +C Z +B Z +A Z +C Z +C Y +C Y +B Y +C Z +B Z +A Y +C Y +A Y +C Y +C Y +C Z +C Z +C Y +C Y +C Z +C Y +C Z +C Y +C Y +C Z +C Y +C Z +C X +C Z +C Z +C Y +B Z +C X +B Z +B Z +C X +B X +C Z +C Y +B Z +C Z +C Y +C Z +C X +C Z +C Z +C Z +A Y +C Z +C Y +C X +C Y +C Z +C Z +C Y +B Z +C Z +B X +C Y +C Y +C X +C Z +C Z +C Y +C Z +B Z +C Z +C X +B Z +C Y +C Z +B Z +C Y +B X +C Z +C Z +C Z +C Y +C Z +C Y +A Y +C Y +C Y +C Z +C Z +B Z +B Z +C Y +C X +C Z +C Z +C Z +C Z +A X +C Y +C Y +C X +C Z +A X +A Y +C Y +A Y +C Y +C Y +C Z +C Z +C Y +B Z +C Y +B Z +C Y +C Y +A X +C Y +C Z +B Z +A Y +A Y +C X +B Z +B Z +C Z +C X +C X +C Y +C Y +C X +A X +C Z +C Y +B Z +C Z +C Z +A Y +C X +C X +C Z +C Y +A Y +C Z +C Z +B Z +C Z +C X +C Z +A Y +C Y +C Y +C Y +B X +C Z +C Y +B Y +C Y +C Z +C Z +A Z +C Z +A Y +B Z +C Y +B Z +C Y +C Y +C Z +C X +A Y +C Z +A Z +C Y +C Z +C Y +C Y +C Z +B Z +A Y +C Y +A Y +B Z +C Z +C Z +C Z +C Z +C Z +C Z +C Z +C Y +B Z +B Z +C Y +C Z +A Y +C Z +C Z +C Z +C X +C Z +A X +B Z +C Z +C Z +B Z +B Y +C Z +C Z +C Z +C Z +C Z +C Z +B Z +C Z +A X +C Y +C Z +B Z +B Z +B Z +B Z +C Z +B Z +C Y +A X +B Z +C Z +B Z +B Z +C Y +B Z +C Y +C Z +A Y +C Y +C X +C Y +C Y +B Z +C Y +C Z +C Y +C Z +B Z +C Z +B Z +A Y +C Z +C Y +C Y +B Z +C Z +C Y +C Y +C Z +A Y +C Z +C Y +C Z +B Z +C Z +C Z +C Z +C Y +C Z +C Z +B Z +C Z +C Z +C Z +B Z +C Z +C Z +C Y +C Y +A X +C Z +C Z +B Z +C Z +C Z +C X +C Z +C X +A X +B Z +A X +C Z +C X +C Y +C Z +B X +C Y +C X +B X +C Y +B X +C Y +C Z +B Z +C Y +C Y +C Z +C Z +B Z +C Z +C Y +C Z +B Z +C Z +A Y +B X +C Y +C Z +A X +C Y +A X +C Z +C Z +C Z +B X +B Z +B Z +B Z +B Z +C Z +B Z +A Z +C X +B Z +C Z +C Z +C Z +B Z +B X +C Z +C Y +C Y +C X +C Z +C Y +C Z +B Z +B Z +A Y +A Y +C Z +B Y +C Z +B Z +C Y +B Z +C Z +B Z +C Z +A Y +C Z +C X +C Z +C Y +C Y +C Z +B Z +C Y +C Z +C Z +C Z +A Y +C Z +C Z +C Y +C Z +A Y +A Z +B X +C Y +C Z +C Z +C Z +C Z +B Z +C Y +A X +C Z +A Y +C Z +C Z +C Z +C Y +B Y +B X +B Z +C Z +A X +A Y +C Z +C Y +C Z +B X +B Y +C Y +C Y +C Z +C Z +C Z +B Y +C Z +C Y +C Z +C Y +C Y +C Y +B Z +B Z +A Y +C Y +A X +C Z +C Z +B Z +A Y +B Z +C X +C Y +B X +C Z +A X +C Z +C Y +C Y +C Y +C Z +C Z +C Y +A Y +C Z +C Z +C X +C Z +C Y +C Z +C Z +A Y +A Y +B Z +C Y +B Z +C Z +C X +C Z +B Z +A Y +C Z +B Z +C Y +C Z +C X +C Y +A X +C Z +B Z +C Y +B Y +C Z +B Y +A Y +C X +C Z +A Y +B Z +A X +C Y +C Z +C Z +C Y +C Y +B X +A Y +C Z +C Y +C Z +C Z +B Z +C Z +B Z +C X +C Y +A Y +C Z +C Y +C Z +C Z +C Y +C Z +C Y +C Y +B Z +C Z +C Z +C Z +B Z +C Y +C Z +C Z +C Z +A X +C Y +C Y +A X +A X +C X +C Z +B Z +C Z +C Y +C X +C Z +B X +C X +A X +C X +C Y +A Y +C Y +C Z +C Z +C Y +C Z +A X +B Z +C Z +C Y +C Z +C Y +C Y +C Y +C Z +C Y +B X +C Z +C Y +C Y +C Y +B Y +C Z +C Z +C Z +C Y +B Z +C Y +A X +B Z +C Y +C Y +C Z +B Z +B Z +C Z +B Z +B Z +A Y +C Z +C Z +C Z +C Y +C Z +C Z +C X +B Z +C Y +B Z +B Z +B Y +A Y +C Z +C X +C Z +C Z +C Z +C Y +C Z +C Z +C X +A X +B X +A Y +A X +C Y +C Y +C Y +B X +A Y +C Z +C Y +A Y +C Z +C Y +C Y +C Z +C Z +B X +C X +C Z +C Z +B Z +C Y +C Z +C Z +C Y +C Z +C Z +B Z +C Y +C Z +B Z +C Y +C Y +C Z +C Y +C X +C Z +C Y +A Y +C Z +B Z +C X +C Y +B Z +B Z +C Z +C Z +C Y +C Y +C Z +B X +A X +C Z +C Z +A Y +C Y +C Z +B Z +C Y +A X +C Y +C Z +C Z +C Y +C Z +C Z +C Z +B Z +B Z +C X +C Y +C Z +C Z +C Z +C Z +A X +C Y +C Y +C Z +B Z +C Y +C Y +A X +C X +B Z +C Y +C Y +B X +C Y +C Z +C Z +C Y +C Y +C Z +C Y +C Z +C Z +C Y +C Z +C Z +B Z +C Z +C Z +C Z +C Y +C Y +C Z +C Y +C Z +B X +A X +C Y diff --git a/2022/src/bin/day02.rs b/2022/src/bin/day02.rs new file mode 100644 index 0000000..a85983b --- /dev/null +++ b/2022/src/bin/day02.rs @@ -0,0 +1,47 @@ +#![feature(iter_array_chunks, test)] +extern crate test; +use aoc2022::{boilerplate, common::*}; + +const DAY: usize = 2; + +#[rustfmt::skip] +fn round(input: [u8; 4]) -> usize { + match (input[0], input[2]) { + (b'A', b'X') => 4, (b'A', b'Y') => 8, (b'A', b'Z') => 3, (b'B', b'X') => 1, (b'B', b'Y') => 5, (b'B', b'Z') => 9, (b'C', b'X') => 7, (b'C', b'Y') => 2, (b'C', b'Z') => 6, + _ => unreachable!(), + } +} + +#[rustfmt::skip] +fn round_p2(input: [u8; 4]) -> usize { + match (input[0], input[2]) { + (b'A', b'X') => 3, (b'A', b'Y') => 4, (b'A', b'Z') => 8, (b'B', b'X') => 1, (b'B', b'Y') => 5, (b'B', b'Z') => 9, (b'C', b'X') => 2, (b'C', b'Y') => 6, (b'C', b'Z') => 7, + _ => unreachable!(), + } +} + +fn parse_input(raw: &str) -> &str { + raw +} + +fn part1(parsed: &str) -> usize { + parsed.bytes().array_chunks().map(round).sum() +} + +fn part2(parsed: &str) -> usize { + parsed.bytes().array_chunks().map(round_p2).sum() +} + +boilerplate! { + TEST_INPUT == "A Y +B X +C Z +", + tests: { + part1: { TEST_INPUT => 15 }, + part2: { TEST_INPUT => 12 }, + }, + bench1 == 13268, + bench2 == 15508, + bench_parse: str::len => 10000, +} diff --git a/2022/src/teststuff.rs b/2022/src/teststuff.rs index b92e685..155be89 100644 --- a/2022/src/teststuff.rs +++ b/2022/src/teststuff.rs @@ -10,7 +10,8 @@ macro_rules! boilerplate { bench_parse: $input_fn: expr => $it: literal$(,)? ) => { fn main() { - let input = parse_input(&read_file(DAY)); + let raw_input = read_file(DAY); + let input = parse_input(&raw_input); println!("Part 1: {}", part1(&input)); println!("Part 2: {}", part2(&input)); }