File tree Expand file tree Collapse file tree 1 file changed +17
-19
lines changed Expand file tree Collapse file tree 1 file changed +17
-19
lines changed Original file line number Diff line number Diff line change @@ -22,25 +22,7 @@ impl Solution for Day05 {
2222 page_updates
2323 . iter ( )
2424 . filter ( |& update| !update. apply_all ( & page_ordering_rules) )
25- . map ( |update| {
26- let mut new_pages = update. pages . clone ( ) ;
27-
28- new_pages. sort_by ( |a, b| {
29- let rule = page_ordering_rules
30- . clone ( )
31- . into_iter ( )
32- . find ( |r| r. first == * a && r. second == * b) ;
33-
34- match rule {
35- None => Ordering :: Greater ,
36- Some ( _) => Ordering :: Less ,
37- }
38- } ) ;
39-
40- let new_update = Update { pages : new_pages } ;
41-
42- new_update. middle_page ( )
43- } )
25+ . map ( |update| update. sorted_by_rules ( & page_ordering_rules) . middle_page ( ) )
4426 . sum :: < usize > ( )
4527 . to_string ( )
4628 }
@@ -111,6 +93,22 @@ impl Update {
11193
11294 * self . pages . get ( mid) . unwrap ( )
11395 }
96+
97+ fn sorted_by_rules ( & self , rules : & [ Rule ] ) -> Self {
98+ let mut pages = self . pages . clone ( ) ;
99+
100+ pages. sort_by ( |a, b| {
101+ let has_rule = rules. iter ( ) . any ( |r| r. first == * a && r. second == * b) ;
102+
103+ if has_rule {
104+ Ordering :: Less
105+ } else {
106+ Ordering :: Greater
107+ }
108+ } ) ;
109+
110+ Self { pages }
111+ }
114112}
115113
116114#[ cfg( test) ]
You can’t perform that action at this time.
0 commit comments