diff --git a/src/main.rs b/src/main.rs index 60f7ed5..645c4d0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,28 +3,40 @@ mod aoc2022; use std::fs; -fn main() { - - let input_day01 = fs::read_to_string("src/aoc2021/day01/input.txt").expect("Error on reading file."); - let result_day01_task1 = aoc2021::day01::task_one(&input_day01); - let result_day01_task2 = aoc2021::day01::task_two(&input_day01); - println!("AOC2021 Day 01 \t Task 1: {},\t\tTask 2: {}", result_day01_task1, result_day01_task2); - - let input_day02 = fs::read_to_string("src/aoc2021/day02/input.txt").expect("Error on reading file."); - let result_day02_task1 = aoc2021::day02::task_one(&input_day02); - let result_day02_task2 = aoc2021::day02::task_two(&input_day02); - println!("AOC2021 Day 02 \t Task 1: {},\tTask 2: {}", result_day02_task1, result_day02_task2); - - let input_day03 = fs::read_to_string("src/aoc2021/day03/input.txt").expect("Error on reading file."); - let result_day03_task1 = aoc2021::day03::task_one(&input_day03); - let result_day03_task2 = aoc2021::day03::task_two(&input_day03); - println!("AOC2021 Day 03 \t Task 1: {},\tTask 2: {}", result_day03_task1, result_day03_task2); - - let input_day04 = fs::read_to_string("src/aoc2021/day04/input.txt").expect("Error on reading file."); - let result_day04_task1 = aoc2021::day04::task_one(&input_day04); - let result_day04_task2 = aoc2021::day04::task_two(&input_day04); - println!("AOC2021 Day 04 \t Task 1: {},\t\tTask 2: {}", result_day04_task1, result_day04_task2); - - let input_d1 = fs::read_to_string("src/aoc2022/day01/input.txt").expect("Error on reading file."); - println!("AOC2022 Day 01 \t Task 1: {},\t\tTask 2: {}", aoc2022::day01::task_one(&input_d1), aoc2022::day01::task_two(&input_d1)); +struct Puzzle { + day: usize, + year: usize, + task_one: fn(&str) -> String, + task_two: fn(&str) -> String +} + +impl Puzzle { + pub fn solve_and_print(&self) { + let file = format!("src/aoc{}/day{:02}/input.txt", self.year, self.day); + let input = fs::read_to_string(file).expect("Error on reading file."); + + let task_one_result = (self.task_one)(&input); + let task_two_result = (self.task_two)(&input); + + println!("AOC{} Day {:02} \t Task 1: {:15}\tTask 2: {}", self.year, self.day, task_one_result, task_two_result); + } +} + +fn main() { + // AOC 2021 + let mut puzzle = Puzzle { day: 1, year: 2021, task_one: aoc2021::day01::task_one, task_two: aoc2021::day01::task_two }; + puzzle.solve_and_print(); + + puzzle = Puzzle { day: 2, year: 2021, task_one: aoc2021::day02::task_one, task_two: aoc2021::day02::task_two }; + puzzle.solve_and_print(); + + puzzle = Puzzle { day: 3, year: 2021, task_one: aoc2021::day03::task_one, task_two: aoc2021::day03::task_two }; + puzzle.solve_and_print(); + + puzzle = Puzzle { day: 4, year: 2021, task_one: aoc2021::day04::task_one, task_two: aoc2021::day04::task_two }; + puzzle.solve_and_print(); + + // AOC 2022 + puzzle = Puzzle { day: 1, year: 2022, task_one: aoc2022::day01::task_one, task_two: aoc2022::day01::task_two }; + puzzle.solve_and_print(); }