summaryrefslogtreecommitdiffstats
path: root/src/opt.rs
blob: 296ea833b575811cb9ece8635a6171e797e2a56f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#[derive(Debug, structopt::StructOpt)]
#[structopt(about = "Advent of Code")]
pub struct Opt {
    pub day: u8,
    pub puzzle: u8,
}

#[macro_export]
macro_rules! day {
    ($year:expr, $day:expr, $puzzle:expr, $mod:ident) => {{
        let data = $mod::parse(parse::data($year, $day)?)?;
        match $puzzle {
            1 => println!("{}", $mod::part1(data)?),
            2 => println!("{}", $mod::part2(data)?),
            _ => {
                panic!("unknown puzzle {} for day {}", $puzzle, $day)
            }
        }
    }};
}