46 lines
1 KiB
Rust
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);
|
|
}
|
|
}
|