@@ -14,15 +14,10 @@ pub fn part_one(input: &str) -> Option<u32> {
1414 . filter ( |& ( _, c, _) | c == 'X' )
1515 . filter ( |& ( point, _, d) | grid. is_in_bounds ( point + ( d * 3 ) ) )
1616 . filter ( |& ( point, _, d) | {
17- let x_pos = point;
18- let m_pos = x_pos + d;
19- let a_pos = m_pos + d;
20- let s_pos = a_pos + d;
21- let spells_xmas = grid[ x_pos] == 'X'
22- && grid[ m_pos] == 'M'
23- && grid[ a_pos] == 'A'
24- && grid[ s_pos] == 'S' ;
25-
17+ let spells_xmas = grid[ point] == 'X'
18+ && grid[ point + d] == 'M'
19+ && grid[ point + d * 2 ] == 'A'
20+ && grid[ point + d * 3 ] == 'S' ;
2621 spells_xmas
2722 } )
2823 . count ( ) ;
@@ -37,7 +32,7 @@ pub fn part_two(input: &str) -> Option<u32> {
3732 . iter_item_and_position ( )
3833 . filter ( |& ( _, & c) | c == 'A' )
3934 . filter ( |& ( point, _) | {
40- let ( Some ( & top_left ) , Some ( & top_right ) , Some ( & bot_left ) , Some ( & bot_right ) ) = (
35+ let ( Some ( & tl ) , Some ( & tr ) , Some ( & bl ) , Some ( & br ) ) = (
4136 grid. get_item ( point + UP + LEFT ) ,
4237 grid. get_item ( point + UP + RIGHT ) ,
4338 grid. get_item ( point + DOWN + LEFT ) ,
@@ -46,11 +41,9 @@ pub fn part_two(input: &str) -> Option<u32> {
4641 return false ;
4742 } ;
4843
49- let spells_xmas_diag1 =
50- ( top_left == 'M' && bot_right == 'S' ) || ( top_left == 'S' && bot_right == 'M' ) ;
51- let spells_xmas_diag2 =
52- ( top_right == 'M' && bot_left == 'S' ) || ( top_right == 'S' && bot_left == 'M' ) ;
53- spells_xmas_diag1 && spells_xmas_diag2
44+ let diag1 = ( tl == 'M' && br == 'S' ) || ( tl == 'S' && br == 'M' ) ;
45+ let diag2 = ( tr == 'M' && bl == 'S' ) || ( tr == 'S' && bl == 'M' ) ;
46+ diag1 && diag2
5447 } )
5548 . count ( ) ;
5649
0 commit comments