|
1 | 1 | pub fn solve_part1(input: &str) -> i32 {
|
2 |
| - |
3 | 2 | let mut xmas_count = 0;
|
4 | 3 |
|
5 | 4 | let word_search_matrix = parse_string_to_2d_vector(input);
|
@@ -31,31 +30,50 @@ pub fn solve_part1(input: &str) -> i32 {
|
31 | 30 | }
|
32 | 31 |
|
33 | 32 | pub fn solve_part2(input: &str) -> i32 {
|
34 |
| - |
35 | 33 | let m = parse_string_to_2d_vector(input);
|
36 | 34 |
|
37 | 35 | let mut x_mas_count = 0;
|
38 |
| - for (i , row) in m.iter().enumerate() { |
| 36 | + for (i, row) in m.iter().enumerate() { |
39 | 37 | for (j, _) in row.iter().enumerate() {
|
40 | 38 | if i > 0 && j > 0 && i < m.len() - 1 && j < row.len() - 1 && m[i][j] == 'A' {
|
41 |
| - let upper_left = m[(i as isize-1).rem_euclid(m.len() as isize) as usize][(j as isize-1).rem_euclid(m[0].len() as isize) as usize]; |
42 |
| - let upper_right = m[(i as isize-1).rem_euclid(m.len() as isize) as usize][(j as isize+1).rem_euclid(m[0].len() as isize) as usize]; |
43 |
| - let lower_left = m[(i as isize+1).rem_euclid(m.len() as isize) as usize][(j as isize-1).rem_euclid(m[0].len() as isize) as usize]; |
44 |
| - let lower_right = m[(i as isize+1).rem_euclid(m.len() as isize) as usize][(j as isize+1).rem_euclid(m[0].len() as isize) as usize]; |
45 |
| - |
46 |
| - if upper_left == 'M' && lower_right == 'S' && lower_left == 'M' && upper_right == 'S' { |
| 39 | + let upper_left = m[(i as isize - 1).rem_euclid(m.len() as isize) as usize] |
| 40 | + [(j as isize - 1).rem_euclid(m[0].len() as isize) as usize]; |
| 41 | + let upper_right = m[(i as isize - 1).rem_euclid(m.len() as isize) as usize] |
| 42 | + [(j as isize + 1).rem_euclid(m[0].len() as isize) as usize]; |
| 43 | + let lower_left = m[(i as isize + 1).rem_euclid(m.len() as isize) as usize] |
| 44 | + [(j as isize - 1).rem_euclid(m[0].len() as isize) as usize]; |
| 45 | + let lower_right = m[(i as isize + 1).rem_euclid(m.len() as isize) as usize] |
| 46 | + [(j as isize + 1).rem_euclid(m[0].len() as isize) as usize]; |
| 47 | + |
| 48 | + if upper_left == 'M' |
| 49 | + && lower_right == 'S' |
| 50 | + && lower_left == 'M' |
| 51 | + && upper_right == 'S' |
| 52 | + { |
47 | 53 | x_mas_count += 1;
|
48 | 54 | }
|
49 | 55 |
|
50 |
| - if upper_left == 'S' && lower_right == 'M' && lower_left == 'M' && upper_right == 'S' { |
| 56 | + if upper_left == 'S' |
| 57 | + && lower_right == 'M' |
| 58 | + && lower_left == 'M' |
| 59 | + && upper_right == 'S' |
| 60 | + { |
51 | 61 | x_mas_count += 1;
|
52 | 62 | }
|
53 |
| - |
54 |
| - if upper_left == 'S' && lower_right == 'M' && lower_left == 'S' && upper_right == 'M' { |
| 63 | + |
| 64 | + if upper_left == 'S' |
| 65 | + && lower_right == 'M' |
| 66 | + && lower_left == 'S' |
| 67 | + && upper_right == 'M' |
| 68 | + { |
55 | 69 | x_mas_count += 1;
|
56 | 70 | }
|
57 | 71 |
|
58 |
| - if upper_left == 'M' && lower_right == 'S' && lower_left == 'S' && upper_right == 'M' { |
| 72 | + if upper_left == 'M' |
| 73 | + && lower_right == 'S' |
| 74 | + && lower_left == 'S' |
| 75 | + && upper_right == 'M' |
| 76 | + { |
59 | 77 | x_mas_count += 1;
|
60 | 78 | }
|
61 | 79 | }
|
@@ -111,7 +129,6 @@ fn collect_diagonals(matrix: &[Vec<char>]) -> Vec<Vec<char>> {
|
111 | 129 | diagonals.push(diagonal);
|
112 | 130 | }
|
113 | 131 |
|
114 |
| - |
115 | 132 | diagonals
|
116 | 133 | }
|
117 | 134 |
|
|
0 commit comments