mod aoc2021; mod aoc2022; use std::fs; 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(); }