You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

76 lines
2.1 KiB
Rust

/******************************************************************************
* @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<dyn Solver>
{
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)
}
}