From 5e49d8279ef5d2c05bb41d3299ef52f5b62223e8 Mon Sep 17 00:00:00 2001 From: Joey Pollack Date: Thu, 5 Dec 2024 12:38:32 -0500 Subject: [PATCH] setting up for day 4 --- Cargo.lock | 9 +++ Cargo.toml | 7 +- crates/day_4/src/day_4.rs | 1 + crates/day_5/Cargo.toml | 9 +++ crates/day_5/build.rs | 33 ++++++++++ crates/day_5/src/day_5.rs | 93 +++++++++++++++++++++++++++ crates/day_5/src/lib.rs | 2 + crates/solver_base/src/solver_base.rs | 1 + 8 files changed, 153 insertions(+), 2 deletions(-) create mode 100644 crates/day_5/Cargo.toml create mode 100644 crates/day_5/build.rs create mode 100644 crates/day_5/src/day_5.rs create mode 100644 crates/day_5/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index f127223..817b593 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10,6 +10,7 @@ dependencies = [ "day_2", "day_3", "day_4", + "day_5", "solver_base", "utils", ] @@ -46,6 +47,14 @@ dependencies = [ "utils", ] +[[package]] +name = "day_5" +version = "0.1.0" +dependencies = [ + "solver_base", + "utils", +] + [[package]] name = "solver_base" version = "0.1.0" diff --git a/Cargo.toml b/Cargo.toml index 11a4eb0..ab52df8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,7 +11,8 @@ members = [ "crates/day_1", "crates/day_2", "crates/day_3", - "crates/day_4" + "crates/day_4", + "crates/day_5" ] [dependencies] @@ -21,6 +22,7 @@ day_1 = { workspace = true } day_2 = { workspace = true } day_3 = { workspace = true } day_4 = { workspace = true } +day_5 = { workspace = true } [workspace.dependencies] @@ -29,4 +31,5 @@ solver_base = { path = "crates/solver_base" } day_1 = { path = "crates/day_1" } day_2 = { path = "crates/day_2" } day_3 = { path = "crates/day_3" } -day_4 = { path = "crates/day_4" } \ No newline at end of file +day_4 = { path = "crates/day_4" } +day_5 = { path = "crates/day_5" } \ No newline at end of file diff --git a/crates/day_4/src/day_4.rs b/crates/day_4/src/day_4.rs index 8e7d859..4c90ded 100644 --- a/crates/day_4/src/day_4.rs +++ b/crates/day_4/src/day_4.rs @@ -66,6 +66,7 @@ impl Solver for Day4 DataSet::Test => format!("{}/data/day4_test_input", dir), DataSet::TestAlt => panic!("Day 4: There is no TestAlt input file!"), //format!("{}/data/day2_test_input", dir), DataSet::Full => format!("{}/data/day4_input", dir), + //DataSet::BALLS => panic!("BALLS"), }; diff --git a/crates/day_5/Cargo.toml b/crates/day_5/Cargo.toml new file mode 100644 index 0000000..3d22c60 --- /dev/null +++ b/crates/day_5/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "day_5" +description = "Day 5 of the Advent of Code 2024" +version = "0.1.0" +edition = "2021" + +[dependencies] +solver_base = { workspace = true } +utils = { workspace = true } \ No newline at end of file diff --git a/crates/day_5/build.rs b/crates/day_5/build.rs new file mode 100644 index 0000000..4cd9495 --- /dev/null +++ b/crates/day_5/build.rs @@ -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())); + } +} \ No newline at end of file diff --git a/crates/day_5/src/day_5.rs b/crates/day_5/src/day_5.rs new file mode 100644 index 0000000..8040efb --- /dev/null +++ b/crates/day_5/src/day_5.rs @@ -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() + } + } + } + +} \ No newline at end of file diff --git a/crates/day_5/src/lib.rs b/crates/day_5/src/lib.rs new file mode 100644 index 0000000..1336336 --- /dev/null +++ b/crates/day_5/src/lib.rs @@ -0,0 +1,2 @@ + +pub mod day_5; \ No newline at end of file diff --git a/crates/solver_base/src/solver_base.rs b/crates/solver_base/src/solver_base.rs index 1867014..ebc8769 100644 --- a/crates/solver_base/src/solver_base.rs +++ b/crates/solver_base/src/solver_base.rs @@ -12,6 +12,7 @@ pub enum DataSet { Test, TestAlt, + //BALLS, Full, }