refactor puzzles into structs

This commit is contained in:
Max Hohlfeld 2022-12-01 20:15:57 +01:00
parent cebb68f4c7
commit 00ef5ed60e

View File

@ -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();
}