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.

113 lines
2.4 KiB
Rust

/******************************************************************************
* @file day_2.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 day 2 problems
******************************************************************************/
use crate::report::Report;
use ::solver_base::solver_base::{Solver, DataSet, RunMode};
use utils::utils;
pub struct Day2
{
data_set: DataSet,
run_mode: RunMode,
do_debug_prints: bool,
reports: Vec<Report>,
pub final_result: i32,
}
//|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// DAY 2 IMPL
//|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
impl Day2
{
pub fn new() -> Day2
{
Day2 { data_set: DataSet::Test, run_mode: RunMode::FirstCase, do_debug_prints: false, reports: vec![], final_result: 0 }
}
fn solve_first_case(self: &mut Self) -> String
{
// TODO: Day2::solve_first_case
self.final_result.to_string()
}
fn solve_second_case(self: &mut Self) -> String
{
// TODO: Day2::solve_second_case
self.final_result.to_string()
}
}
//|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// SOLVER TRAIT IMPL
//|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
impl Solver for Day2
{
fn print_test()
{
println!("DAY 2 TEST PRINT");
}
fn init(self: &mut Self, data_set: DataSet, run_mode: RunMode, enable_debug_prints: bool)
{
self.run_mode = run_mode;
self.do_debug_prints = enable_debug_prints;
let dir = utils::get_working_dir();
let data_filename =
match self.data_set
{
DataSet::Test => format!("{}/data/test_input", dir),
DataSet::Full => format!("{}/data/input", dir),
};
let data = utils::load_data(&data_filename);
for r in data.split("\n")
{
if self.do_debug_prints
{
println!("Raw report: {}", r);
}
let mut lvl_list: Vec<i32> = vec![];
for value in r.split(" ")
{
lvl_list.push(value.parse::<i32>().unwrap());
}
if self.do_debug_prints
{
println!("Processed report: {:#?}", lvl_list);
}
self.reports.push(Report::new(lvl_list));
}
}
fn solve(self: &mut Self) -> String
{
match self.run_mode
{
RunMode::FirstCase =>
{
self.solve_first_case()
},
RunMode::SecondCase =>
{
self.solve_second_case()
}
}
}
}