@@ -259,6 +259,15 @@ pub fn puzzle_1(input: &str) -> Result<u32, PuzzleErr> {
259259 Ok ( organize_parts ( & parts, & workflows_map) )
260260}
261261
262+ pub fn puzzle_2 ( input : & str ) -> Result < u32 , PuzzleErr > {
263+ let ( workflows, parts) = parse_input ( input) ?;
264+ let workflows_map = workflows
265+ . iter ( )
266+ . map ( |w| ( w. name . as_str ( ) , w. clone ( ) ) )
267+ . collect :: < HashMap < & str , Workflow > > ( ) ;
268+ Ok ( organize_parts ( & parts, & workflows_map) )
269+ }
270+
262271pub fn main ( data_dir : & str ) {
263272 println ! ( "Day 19: Aplenty" ) ;
264273 let data = load ( data_dir, 19 , None ) ;
@@ -269,13 +278,13 @@ pub fn main(data_dir: &str) {
269278 Ok ( x) => println ! ( " Puzzle 1: {}" , x) ,
270279 Err ( e) => panic ! ( "No solution to puzzle 1: {}." , e) ,
271280 }
272- // assert_eq!(answer_1, Ok(37113 ));
281+ assert_eq ! ( answer_1, Ok ( 509597 ) ) ;
273282
274283 // Puzzle 2.
275- // let answer_2 = puzzle_2(&data);
276- // match answer_2 {
277- // Ok(x) => println!(" Puzzle 2: {}", x),
278- // Err(e) => panic!("No solution to puzzle 2: {}", e),
279- // }
284+ let answer_2 = puzzle_2 ( & data) ;
285+ match answer_2 {
286+ Ok ( x) => println ! ( " Puzzle 2: {}" , x) ,
287+ Err ( e) => panic ! ( "No solution to puzzle 2: {}" , e) ,
288+ }
280289 // assert_eq!(answer_2, Ok(30449))
281290}
0 commit comments