| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- #[macro_use]
- extern crate clap;
- mod day_1;
- mod day_2;
- mod day_3;
- mod day_4;
- mod puzzle;
- use crate::puzzle::options::Options;
- use crate::puzzle::traits::{Create, Solve};
- fn main() {
- let yml = load_yaml!("cli.yml");
- let matches = clap::App::from_yaml(yml).get_matches();
- let day = opt_str_to_int(matches.value_of("day"));
- let puzzle_number = opt_str_to_int(matches.value_of("puzzle"));
- let prompt = matches.is_present("prompt");
- let options = Options {
- puzzle: puzzle_number,
- prompt,
- };
- let puzzle: Box<dyn Solve> = match day {
- 1 => day_1::Puzzle::new(options),
- 2 => day_2::Puzzle::new(options),
- 3 => day_3::Puzzle::new(options),
- 4 => day_4::Puzzle::new(options),
- e => panic!("unknown day {}", e),
- };
- let res = puzzle.solve();
- println!("{}", res);
- }
- fn opt_str_to_int(val: Option<&str>) -> i32 {
- match val {
- Some(val) => val.parse::<i32>().unwrap(),
- None => panic!("value not supplied! type --help"),
- }
- }
|