summaryrefslogtreecommitdiffstats
path: root/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs48
1 files changed, 47 insertions, 1 deletions
diff --git a/src/lib.rs b/src/lib.rs
index 51f906c..54ce211 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -4,7 +4,9 @@
iter_array_chunks,
array_windows,
iter_intersperse,
- impl_trait_in_assoc_type
+ impl_trait_in_assoc_type,
+ macro_metavar_expr,
+ slice_group_by
)]
pub mod day_01;
@@ -24,6 +26,50 @@ pub mod day_14;
pub mod day_15;
pub mod day_16;
pub mod day_17;
+pub mod day_18;
+pub mod printer;
+
+pub use printer::Printer;
+
+pub type Result<T, E = Box<dyn std::error::Error>> = std::result::Result<T, E>;
+
+#[macro_export]
+macro_rules! get_days {
+ // `()` indicates that the macro takes no argument.
+ ($($day:path),*) => {
+ pub fn get_days() -> [(&'static str, [Box<dyn Fn(&str) -> anyhow::Result<usize>>; 2]); ${count(day)}] {
+ [
+ $((<$day>::INPUT,
+ [
+ Box::new(<$day>::part_1),
+ Box::new(<$day>::part_2),
+ ])
+ ,)*
+ ]
+ }
+ };
+}
+
+get_days!(
+ day_01::Day01,
+ day_02::Day02,
+ day_03::Day03,
+ day_04::Day04,
+ day_05::Day05,
+ day_06::Day06,
+ day_07::Day07,
+ day_08::Day08,
+ day_09::Day09,
+ day_10::Day10,
+ day_11::Day11,
+ day_12::Day12,
+ day_13::Day13,
+ day_14::Day14,
+ day_15::Day15,
+ day_16::Day16,
+ day_17::Day17,
+ day_18::Day18
+);
pub trait Problem {
const DAY: u8;