@@ -39,34 +39,23 @@ pub fn read_file_part(folder: &str, day: Day, part: u8) -> String {
39
39
#[ macro_export]
40
40
macro_rules! solution {
41
41
( $day: expr) => {
42
- /// The current day.
43
- const DAY : advent_of_code:: template:: Day = advent_of_code:: day!( $day) ;
44
-
45
- fn main( ) {
46
- use advent_of_code:: template:: runner:: * ;
47
- let input = advent_of_code:: template:: read_file( "inputs" , DAY ) ;
48
- run_part( part_one, & input, DAY , 1 ) ;
49
- run_part( part_two, & input, DAY , 2 ) ;
50
- }
42
+ $crate:: solution!( @impl $day, [ part_one, 1 ] [ part_two, 2 ] ) ;
51
43
} ;
52
44
( $day: expr, 1 ) => {
53
- /// Allows solving part one in isolation
54
- const DAY : advent_of_code:: template:: Day = advent_of_code:: day!( $day) ;
55
-
56
- fn main( ) {
57
- use advent_of_code:: template:: runner:: * ;
58
- let input = advent_of_code:: template:: read_file( "inputs" , DAY ) ;
59
- run_part( part_one, & input, DAY , 1 ) ;
60
- }
45
+ $crate:: solution!( @impl $day, [ part_one, 1 ] ) ;
61
46
} ;
62
47
( $day: expr, 2 ) => {
63
- /// Allows solving part two in isolation
64
- const DAY : advent_of_code:: template:: Day = advent_of_code:: day!( $day) ;
48
+ $crate:: solution!( @impl $day, [ part_two, 2 ] ) ;
49
+ } ;
50
+
51
+ ( @impl $day: expr, $( [ $func: expr, $part: expr] ) * ) => {
52
+ /// The current day.
53
+ const DAY : $crate:: template:: Day = $crate:: day!( $day) ;
65
54
66
55
fn main( ) {
67
- use advent_of_code :: template:: runner:: * ;
68
- let input = advent_of_code :: template:: read_file( "inputs" , DAY ) ;
69
- run_part( part_two , & input, DAY , 2 ) ;
56
+ use $crate :: template:: runner:: * ;
57
+ let input = $crate :: template:: read_file( "inputs" , DAY ) ;
58
+ $ ( run_part( $func , & input, DAY , $part ) ; ) *
70
59
}
71
60
} ;
72
61
}
0 commit comments