@@ -14,22 +14,22 @@ pub fn part1(input: &[Vec<usize>]) -> usize {
1414 . iter ( )
1515 . filter ( |& report| {
1616 let increasing = report[ 0 ] < report[ 1 ] ;
17- let mut last = 0 ;
18- for i in 0 .. report. len ( ) {
17+ let mut last_level = 0 ;
18+ for ( i , level ) in report. iter ( ) . enumerate ( ) {
1919 if i == 0 {
20- last = report [ i ] ;
20+ last_level = * level ;
2121 continue ;
2222 }
23- if report [ i ] . abs_diff ( last ) < 1 || report [ i ] . abs_diff ( last ) > 3 {
23+ if level . abs_diff ( last_level ) < 1 || level . abs_diff ( last_level ) > 3 {
2424 return false ;
2525 }
26- if increasing && report [ i ] < last {
26+ if increasing && * level < last_level {
2727 return false ;
2828 }
29- if !increasing && report [ i ] > last {
29+ if !increasing && * level > last_level {
3030 return false ;
3131 }
32- last = report [ i ] ;
32+ last_level = * level ;
3333 }
3434 true
3535 } )
@@ -44,29 +44,31 @@ pub fn part2(input: &[Vec<usize>]) -> usize {
4444 for i in 0 ..report. len ( ) {
4545 let mut new_report = report. clone ( ) ;
4646 new_report. remove ( i) ;
47+
4748 let increasing = new_report[ 0 ] < new_report[ 1 ] ;
48- let mut last = 0 ;
49- let mut bad = false ;
50- for j in 0 ..new_report. len ( ) {
51- if j == 0 {
52- last = new_report[ j] ;
49+ let mut last_level = 0 ;
50+
51+ let mut bad_level = false ;
52+ for ( i, level) in new_report. iter ( ) . enumerate ( ) {
53+ if i == 0 {
54+ last_level = * level;
5355 continue ;
5456 }
55- if new_report [ j ] . abs_diff ( last ) < 1 || new_report [ j ] . abs_diff ( last ) > 3 {
56- bad = true ;
57+ if level . abs_diff ( last_level ) < 1 || level . abs_diff ( last_level ) > 3 {
58+ bad_level = true ;
5759 break ;
5860 }
59- if increasing && new_report [ j ] < last {
60- bad = true ;
61+ if increasing && * level < last_level {
62+ bad_level = true ;
6163 break ;
6264 }
63- if !increasing && new_report [ j ] > last {
64- bad = true ;
65+ if !increasing && * level > last_level {
66+ bad_level = true ;
6567 break ;
6668 }
67- last = new_report [ j ] ;
69+ last_level = * level ;
6870 }
69- if !bad {
71+ if !bad_level {
7072 return true ;
7173 }
7274 }
0 commit comments