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; use std::fs;
fn main() { struct Puzzle {
day: usize,
let input_day01 = fs::read_to_string("src/aoc2021/day01/input.txt").expect("Error on reading file."); year: usize,
let result_day01_task1 = aoc2021::day01::task_one(&input_day01); task_one: fn(&str) -> String,
let result_day01_task2 = aoc2021::day01::task_two(&input_day01); task_two: fn(&str) -> String
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."); impl Puzzle {
let result_day02_task1 = aoc2021::day02::task_one(&input_day02); pub fn solve_and_print(&self) {
let result_day02_task2 = aoc2021::day02::task_two(&input_day02); let file = format!("src/aoc{}/day{:02}/input.txt", self.year, self.day);
println!("AOC2021 Day 02 \t Task 1: {},\tTask 2: {}", result_day02_task1, result_day02_task2); let input = fs::read_to_string(file).expect("Error on reading file.");
let input_day03 = fs::read_to_string("src/aoc2021/day03/input.txt").expect("Error on reading file."); let task_one_result = (self.task_one)(&input);
let result_day03_task1 = aoc2021::day03::task_one(&input_day03); let task_two_result = (self.task_two)(&input);
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); println!("AOC{} Day {:02} \t Task 1: {:15}\tTask 2: {}", self.year, self.day, task_one_result, task_two_result);
}
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); fn main() {
println!("AOC2021 Day 04 \t Task 1: {},\t\tTask 2: {}", result_day04_task1, result_day04_task2); // AOC 2021
let mut puzzle = Puzzle { day: 1, year: 2021, task_one: aoc2021::day01::task_one, task_two: aoc2021::day01::task_two };
let input_d1 = fs::read_to_string("src/aoc2022/day01/input.txt").expect("Error on reading file."); puzzle.solve_and_print();
println!("AOC2022 Day 01 \t Task 1: {},\t\tTask 2: {}", aoc2022::day01::task_one(&input_d1), aoc2022::day01::task_two(&input_d1));
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();
} }