aoc-rs-2021/src/day_16/mod.rs

41 lines
957 B
Rust
Raw Normal View History

2021-12-16 13:08:24 +00:00
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()
}
2021-12-16 13:42:27 +00:00
#[aoc(day16, part2)]
pub fn part2(input: &Packet) -> usize {
input.calculate()
}
2021-12-16 13:08:24 +00:00
#[cfg(test)]
mod test {
#[test]
2021-12-16 13:42:27 +00:00
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);
}
2021-12-16 13:08:24 +00:00
}
}