aoc-rs-2021/src/day_16/mod.rs
Jan Christian Grünhage 7c8b242698 implement day 16 part 2
2021-12-16 14:42:27 +01:00

41 lines
957 B
Rust

mod model;
mod parsing;
use aoc_runner_derive::{aoc, aoc_generator};
pub use model::{Kind, Operator, Packet};
pub use parsing::{parse_packet, BinTokens};
#[aoc_generator(day16)]
pub fn parse_input(input: &str) -> Packet {
parse_packet(&mut input.parse::<BinTokens>().unwrap()).unwrap()
}
#[aoc(day16, part1)]
pub fn part1(input: &Packet) -> usize {
input.sum_of_version_numbers()
}
#[aoc(day16, part2)]
pub fn part2(input: &Packet) -> usize {
input.calculate()
}
#[cfg(test)]
mod test {
#[test]
fn part2_example() {
for (input, result) in [
("C200B40A82", 3),
("04005AC33890", 54),
("880086C3E88112", 7),
("CE00C43D881120", 9),
("D8005AC2A8F0", 1),
("F600BC2D8F", 0),
("9C005AC2F8F0", 0),
("9C0141080250320F1802104A08", 1),
] {
assert_eq!(super::part2(&super::parse_input(input)), result);
}
}
}