/****************************************************************************** * @file main.rs * @author Joey Pollack * @date 2024/12/03 (y/m/d) * @modified 2024/12/03 (y/m/d) * @copyright Joseph R Pollack * @brief Advent of Code 2024 main file ******************************************************************************/ mod settings; use day_1::day_1::Day1; use day_2::day_2::Day2; use day_3::day_3::Day3; use day_4::day_4::Day4; use day_5::day_5::Day5; use day_6::day_6::Day6; use day_7::day_7::Day7; use day_8::day_8::Day8; use solver_base::solver_base::{Solver, DataSet, RunMode}; use settings::Settings; fn main() { const NUM_PROBLEMS: i32 = 8; let program_settings = Settings::new(); for i in 1..=NUM_PROBLEMS { if !program_settings.skip_problems_contains(i) { let debug = program_settings.debug_problems_contains(i); let verbose = program_settings.verbose_problems_contains(i); let data_set = match debug { true => DataSet::Test, false => DataSet::Full, }; let mut solver = create_problem_solver(i); solver.init(data_set, RunMode::FirstCase, debug, verbose); let result = solver.solve(); println!("Day {} Part 1 Final Result: {}", i, result); solver = create_problem_solver(i); solver.init(data_set, RunMode::SecondCase, debug, verbose); let result = solver.solve(); println!("Day {} Part 2 Final Result: {}", i, result); } else { println!("Day {} SKIPPING", i); } println!("-------------------------"); } } fn create_problem_solver(day_num: i32) -> Box { match day_num { 1 => Box::new(Day1::new()), 2 => Box::new(Day2::new()), 3 => Box::new(Day3::new()), 4 => Box::new(Day4::new()), 5 => Box::new(Day5::new()), 6 => Box::new(Day6::new()), 7 => Box::new(Day7::new()), 8 => Box::new(Day8::new()), _ => panic!("ERROR in create_problem_solver: Invalid day_num: {}", day_num) } }