|
|
|
|
@ -8,7 +8,7 @@
|
|
|
|
|
* @brief Advent of Code 2024 day 2 problems
|
|
|
|
|
******************************************************************************/
|
|
|
|
|
|
|
|
|
|
use crate::report::Report;
|
|
|
|
|
use crate::report::{Report, Status};
|
|
|
|
|
use ::solver_base::solver_base::{Solver, DataSet, RunMode};
|
|
|
|
|
use utils::utils;
|
|
|
|
|
|
|
|
|
|
@ -30,20 +30,6 @@ impl 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()
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
@ -58,6 +44,7 @@ impl Solver for Day2
|
|
|
|
|
|
|
|
|
|
fn init(self: &mut Self, data_set: DataSet, run_mode: RunMode, enable_debug_prints: bool)
|
|
|
|
|
{
|
|
|
|
|
self.data_set = data_set;
|
|
|
|
|
self.run_mode = run_mode;
|
|
|
|
|
self.do_debug_prints = enable_debug_prints;
|
|
|
|
|
|
|
|
|
|
@ -65,8 +52,8 @@ impl Solver for Day2
|
|
|
|
|
let data_filename =
|
|
|
|
|
match self.data_set
|
|
|
|
|
{
|
|
|
|
|
DataSet::Test => format!("{}/data/test_input", dir),
|
|
|
|
|
DataSet::Full => format!("{}/data/input", dir),
|
|
|
|
|
DataSet::Test => format!("{}/data/day2_test_input", dir),
|
|
|
|
|
DataSet::Full => format!("{}/data/day2_input", dir),
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -78,6 +65,15 @@ impl Solver for Day2
|
|
|
|
|
println!("Raw report: {}", r);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if r.is_empty()
|
|
|
|
|
{
|
|
|
|
|
if self.do_debug_prints
|
|
|
|
|
{
|
|
|
|
|
println!("Day 2 DEBUG: Report is empty, discarding...");
|
|
|
|
|
}
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let mut lvl_list: Vec<i32> = vec![];
|
|
|
|
|
for value in r.split(" ")
|
|
|
|
|
{
|
|
|
|
|
@ -89,25 +85,26 @@ impl Solver for Day2
|
|
|
|
|
println!("Processed report: {:#?}", lvl_list);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
self.reports.push(Report::new(lvl_list));
|
|
|
|
|
let dampener = self.run_mode == RunMode::SecondCase;
|
|
|
|
|
self.reports.push(Report::new(lvl_list, dampener));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fn solve(self: &mut Self) -> String
|
|
|
|
|
{
|
|
|
|
|
match self.run_mode
|
|
|
|
|
let mut num_safe = 0;
|
|
|
|
|
for report in &mut self.reports
|
|
|
|
|
{
|
|
|
|
|
RunMode::FirstCase =>
|
|
|
|
|
if report.analyze(self.do_debug_prints) == Status::Safe
|
|
|
|
|
{
|
|
|
|
|
self.solve_first_case()
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
RunMode::SecondCase =>
|
|
|
|
|
{
|
|
|
|
|
self.solve_second_case()
|
|
|
|
|
num_safe += 1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
self.final_result = num_safe;
|
|
|
|
|
|
|
|
|
|
self.final_result.to_string()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|