Getting setup for day 5

master
Joey Pollack 1 year ago
parent e5d3b424a5
commit 6e25fef987

9
Cargo.lock generated

@ -11,6 +11,7 @@ dependencies = [
"day_3", "day_3",
"day_4", "day_4",
"day_5", "day_5",
"day_6",
"solver_base", "solver_base",
"utils", "utils",
] ]
@ -55,6 +56,14 @@ dependencies = [
"utils", "utils",
] ]
[[package]]
name = "day_6"
version = "0.1.0"
dependencies = [
"solver_base",
"utils",
]
[[package]] [[package]]
name = "solver_base" name = "solver_base"
version = "0.1.0" version = "0.1.0"

@ -12,7 +12,8 @@ members = [
"crates/day_2", "crates/day_2",
"crates/day_3", "crates/day_3",
"crates/day_4", "crates/day_4",
"crates/day_5" "crates/day_5",
"crates/day_6"
] ]
[dependencies] [dependencies]
@ -23,6 +24,7 @@ day_2 = { workspace = true }
day_3 = { workspace = true } day_3 = { workspace = true }
day_4 = { workspace = true } day_4 = { workspace = true }
day_5 = { workspace = true } day_5 = { workspace = true }
day_6 = { workspace = true }
[workspace.dependencies] [workspace.dependencies]
@ -33,3 +35,4 @@ day_2 = { path = "crates/day_2" }
day_3 = { path = "crates/day_3" } day_3 = { path = "crates/day_3" }
day_4 = { path = "crates/day_4" } day_4 = { path = "crates/day_4" }
day_5 = { path = "crates/day_5" } day_5 = { path = "crates/day_5" }
day_6 = { path = "crates/day_6" }

@ -0,0 +1,9 @@
[package]
name = "day_6"
description = "Day 6 of the Advent of Code 2024"
version = "0.1.0"
edition = "2021"
[dependencies]
solver_base = { workspace = true }
utils = { workspace = true }

@ -0,0 +1,33 @@
use std::{env, fs, path::Path};
fn main()
{
// let out_dir = env::var("OUT_DIR").unwrap();
// let cwd = env::var("CARGO_MANIFEST_DIR").unwrap();
// println!("CWD: {}\n", cwd);
// let data_dir = cwd + "\\data";
// let data_path = Path::new(&data_dir);
// println!("Data path: {}", data_path.to_string_lossy());
// let data_path = Path::new("data/test_input");
// let out_dir = env::var("OUT_DIR").unwrap();
// panic!("out_dir: {}", out_dir);
let out_path = format!("../../target/{}", &env::var("PROFILE").unwrap());
let out_path = Path::new(&out_path);
//let out_path = Path::new(&out_dir).join(&env::var("PROFILE").unwrap());
let out_path_data = out_path.join(Path::new("data"));
if !out_path_data.exists()
{
fs::create_dir(&out_path_data).expect(&format!("Could not create data directory at: {}", out_path_data.to_string_lossy()));
}
for file in fs::read_dir("data").unwrap()
{
let file = file.unwrap();
let dest = out_path.join(file.path());
fs::copy(file.path(), &dest).expect(&format!("Could not copy file {} to {}", file.path().to_string_lossy(), dest.to_string_lossy()));
}
}

@ -0,0 +1,93 @@
/******************************************************************************
* @file day_5.rs
* @author Joey Pollack
* @date 2024/12/05 (y/m/d)
* @modified 2024/12/05 (y/m/d)
* @copyright Joseph R Pollack
* @brief Advent of Code 2024 day 5 problems
******************************************************************************/
use ::solver_base::solver_base::{Solver, DataSet, RunMode};
use utils::utils;
pub struct Day5
{
data_set: DataSet,
run_mode: RunMode,
do_debug_prints: bool,
pub final_result: i32,
}
//|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// DAY 4 IMPL
//|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
impl Day5
{
pub fn new() -> Day5
{
Day5 { data_set: DataSet::Test, run_mode: RunMode::FirstCase, do_debug_prints: false, final_result: 0 }
}
fn solve_first_case(self: &mut Self) -> String
{
self.final_result.to_string()
}
fn solve_second_case(self: &mut Self) -> String
{
self.final_result.to_string()
}
}
//|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// SOLVER TRAIT IMPL
//|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
impl Solver for Day5
{
fn print_test()
{
println!("DAY 4 TEST PRINT");
}
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;
let dir = utils::get_working_dir();
let data_filename =
match self.data_set
{
DataSet::Test => format!("{}/data/day5_test_input", dir),
DataSet::TestAlt => panic!("Day 5: There is no TestAlt input file!"), //format!("{}/data/day2_test_input", dir),
DataSet::Full => format!("{}/data/day5_input", dir),
};
let _data = utils::load_data(&data_filename);
// TODO: Day5::init
}
fn solve(self: &mut Self) -> String
{
match self.run_mode
{
RunMode::FirstCase =>
{
self.solve_first_case()
},
RunMode::SecondCase =>
{
self.solve_second_case()
}
}
}
}

@ -0,0 +1,2 @@
pub mod day_6;

@ -11,6 +11,7 @@ use day_1::day_1::Day1;
use day_2::day_2::Day2; use day_2::day_2::Day2;
use day_3::day_3::Day3; use day_3::day_3::Day3;
use day_4::day_4::Day4; use day_4::day_4::Day4;
use day_5::day_5::Day5;
use solver_base::solver_base::{Solver, DataSet, RunMode}; use solver_base::solver_base::{Solver, DataSet, RunMode};
fn main() fn main()
@ -19,12 +20,12 @@ fn main()
let mut day_1 = Day1::new(); let mut day_1 = Day1::new();
day_1.init(DataSet::Full, RunMode::FirstCase, false); day_1.init(DataSet::Full, RunMode::FirstCase, false);
let day1_result = day_1.solve(); let day1_result = day_1.solve();
println!("Day1 Part 1 Final Result: {}", day1_result); println!("Day 1 Part 1 Final Result: {}", day1_result);
let mut day_1 = Day1::new(); let mut day_1 = Day1::new();
day_1.init(DataSet::Full, RunMode::SecondCase, false); day_1.init(DataSet::Full, RunMode::SecondCase, false);
let day1_result = day_1.solve(); let day1_result = day_1.solve();
println!("Day1 Part 2 Final Result: {}", day1_result); println!("Day 1 Part 2 Final Result: {}", day1_result);
println!("-------------------------"); println!("-------------------------");
@ -33,12 +34,12 @@ fn main()
let mut day_2 = Day2::new(); let mut day_2 = Day2::new();
day_2.init(DataSet::Full, RunMode::FirstCase, false); day_2.init(DataSet::Full, RunMode::FirstCase, false);
let day2_result = day_2.solve(); let day2_result = day_2.solve();
println!("Day2 Part 1 Final Result: {}", day2_result); println!("Day 2 Part 1 Final Result: {}", day2_result);
let mut day_2 = Day2::new(); let mut day_2 = Day2::new();
day_2.init(DataSet::Full, RunMode::SecondCase, false); day_2.init(DataSet::Full, RunMode::SecondCase, false);
let day2_result = day_2.solve(); let day2_result = day_2.solve();
println!("Day2 Part 2 Final Result: {}", day2_result); println!("Day 2 Part 2 Final Result: {}", day2_result);
println!("-------------------------"); println!("-------------------------");
@ -46,12 +47,12 @@ fn main()
let mut day_3 = Day3::new(); let mut day_3 = Day3::new();
day_3.init(DataSet::Full, RunMode::FirstCase, false); day_3.init(DataSet::Full, RunMode::FirstCase, false);
let day3_result = day_3.solve(); let day3_result = day_3.solve();
println!("Day3 Part 1 Final Result: {}", day3_result); println!("Day 3 Part 1 Final Result: {}", day3_result);
let mut day_3 = Day3::new(); let mut day_3 = Day3::new();
day_3.init(DataSet::Full, RunMode::SecondCase, false); day_3.init(DataSet::Full, RunMode::SecondCase, false);
let day3_result = day_3.solve(); let day3_result = day_3.solve();
println!("Day3 Part 2 Final Result: {}", day3_result); println!("Day 3 Part 2 Final Result: {}", day3_result);
println!("-------------------------"); println!("-------------------------");
@ -59,12 +60,25 @@ fn main()
let mut day_4 = Day4::new(); let mut day_4 = Day4::new();
day_4.init(DataSet::Full, RunMode::FirstCase, false); day_4.init(DataSet::Full, RunMode::FirstCase, false);
let day4_result = day_4.solve(); let day4_result = day_4.solve();
println!("Day4 Part 1 Final Result: {}", day4_result); println!("Day 4 Part 1 Final Result: {}", day4_result);
let mut day_4 = Day4::new(); let mut day_4 = Day4::new();
day_4.init(DataSet::Full, RunMode::SecondCase, false); day_4.init(DataSet::Full, RunMode::SecondCase, false);
let day4_result = day_4.solve(); let day4_result = day_4.solve();
println!("Day4 Part 2 Final Result: {}", day4_result); println!("Day 4 Part 2 Final Result: {}", day4_result);
println!("-------------------------");
// DAY 5
let mut day_5 = Day5::new();
day_5.init(DataSet::Test, RunMode::FirstCase, false);
let day5_result = day_5.solve();
println!("Day 5 Part 1 Final Result: {}", day5_result);
let mut day_5 = Day5::new();
day_5.init(DataSet::Test, RunMode::SecondCase, false);
let day5_result = day_5.solve();
println!("Day 5 Part 2 Final Result: {}", day5_result);
println!("-------------------------"); println!("-------------------------");

Loading…
Cancel
Save