aoc-rs-2021/src/day_16/mod.rs
Jan Christian Grünhage aac5c02b82 implement day 16 part 1
2021-12-16 14:08:24 +01:00

46 lines
1 KiB
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(dayx, part2)]
//pub fn part2(input: &[Input]) -> usize {
// unimplemented!();
//}
#[cfg(test)]
mod test {
const EXAMPLE_INPUT: &str = "A0016C880162017C3686B18A3D4780";
const RESULT_PART_1: usize = 31;
//const RESULT_PART_2: usize = 0;
#[test]
fn part1_example() {
let result = super::part1(&super::parse_input(EXAMPLE_INPUT));
assert_eq!(result, RESULT_PART_1);
}
//#[test]
//fn part2_example() {
// let result = super::part2(&super::parse_input(EXAMPLE_INPUT));
// assert_eq!(result, RESULT_PART_2);
//}
#[test]
fn parse_example() {
super::parse_input(EXAMPLE_INPUT);
}
}