Change Solution trait

This commit is contained in:
Mathis 2023-12-21 19:55:51 +01:00
parent 793241a355
commit 100fd47491
9 changed files with 60 additions and 23 deletions

View File

@ -1,4 +1,5 @@
pub trait Solution {
fn part_one(&self) -> String;
fn part_two(&self) -> String;
fn input_path(&self) -> &'static str;
}

View File

@ -3,9 +3,14 @@ pub mod part_two;
use crate::utils::solution::Solution;
pub struct Day1Solution;
pub struct DaySolution;
impl Solution for DaySolution {
fn input_path(&self) -> &'static str {
"Not implemented"
}
impl Solution for Day1Solution {
fn part_one(&self) -> String {
// Implementation for part one of day 1
// ...

View File

@ -3,9 +3,14 @@ pub mod part_two;
use crate::utils::solution::Solution;
pub struct Day2Solution;
pub struct DaySolution;
impl Solution for DaySolution {
fn input_path(&self) -> &'static str {
"Not implemented"
}
impl Solution for Day2Solution {
fn part_one(&self) -> String {
// Implementation for part one of day 1
// ...

View File

@ -2,9 +2,14 @@ pub mod part_one;
use crate::utils::solution::Solution;
pub struct Day3Solution;
pub struct DaySolution;
impl Solution for DaySolution {
fn input_path(&self) -> &'static str {
"Not implemented"
}
impl Solution for Day3Solution {
fn part_one(&self) -> String {
// Implementation for part one of day 1
// ...

View File

@ -2,9 +2,14 @@ pub mod part_one;
use crate::utils::solution::Solution;
pub struct Day4Solution;
pub struct DaySolution;
impl Solution for DaySolution {
fn input_path(&self) -> &'static str {
"Not implemented"
}
impl Solution for Day4Solution {
fn part_one(&self) -> String {
// Implementation for part one of day 1
// ...

View File

@ -3,9 +3,14 @@ pub mod part_two;
use crate::utils::solution::Solution;
pub struct Day6Solution;
pub struct DaySolution;
impl Solution for DaySolution {
fn input_path(&self) -> &'static str {
"Not implemented"
}
impl Solution for Day6Solution {
fn part_one(&self) -> String {
// Implementation for part one of day 1
// ...

View File

@ -4,9 +4,14 @@ pub mod part_two;
use crate::utils::solution::Solution;
pub struct Day8Solution;
pub struct DaySolution;
impl Solution for DaySolution {
fn input_path(&self) -> &'static str {
"Not implemented"
}
impl Solution for Day8Solution {
fn part_one(&self) -> String {
// Implementation for part one of day 1
// ...

View File

@ -6,15 +6,19 @@ use crate::utils::solution::Solution;
use crate::utils::input_reader;
pub struct Day9Solution;
pub struct DaySolution;
impl Solution for Day9Solution {
impl Solution for DaySolution {
fn input_path(&self) -> &'static str {
"input/2023/day_09/input.txt"
}
fn part_one(&self) -> String {
input_reader::read_input_file("input/2023/day_09/input.txt", part_one::part_one)
input_reader::read_input_file(self.input_path(), part_one::part_one)
}
fn part_two(&self) -> String {
input_reader::read_input_file("input/2023/day_09/input.txt", part_two::part_two)
input_reader::read_input_file(self.input_path(), part_two::part_two)
}
}

View File

@ -7,16 +7,18 @@ pub mod day_04_scratchcards;
pub mod day_06_wait_for_it;
pub mod day_08_haunted_wasteland;
pub mod day_09_mirage_maintenance;
pub mod day_10_pipe_maze;
pub fn run(day: &str) {
let solution: Box<dyn Solution> = match day {
"1" => Box::new(day_01_trebuchet::Day1Solution),
"2" => Box::new(day_02_cube_conundrum::Day2Solution),
"3" => Box::new(day_03_gear_ratios::Day3Solution),
"4" => Box::new(day_04_scratchcards::Day4Solution),
"6" => Box::new(day_06_wait_for_it::Day6Solution),
"8" => Box::new(day_08_haunted_wasteland::Day8Solution),
"9" => Box::new(day_09_mirage_maintenance::Day9Solution),
"1" => Box::new(day_01_trebuchet::DaySolution),
"2" => Box::new(day_02_cube_conundrum::DaySolution),
"3" => Box::new(day_03_gear_ratios::DaySolution),
"4" => Box::new(day_04_scratchcards::DaySolution),
"6" => Box::new(day_06_wait_for_it::DaySolution),
"8" => Box::new(day_08_haunted_wasteland::DaySolution),
"9" => Box::new(day_09_mirage_maintenance::DaySolution),
"10" => Box::new(day_10_pipe_maze::DaySolution),
_ => panic!("Invalid day specified"),
};