File tree 2 files changed +57
-0
lines changed
2 files changed +57
-0
lines changed Original file line number Diff line number Diff line change
1
+ #!/usr/bin/env ruby
2
+
3
+ class Report
4
+ attr_accessor :levels , :differences
5
+
6
+ def initialize ( line )
7
+ @levels = line . split . map ( &:to_i )
8
+ gen_differences
9
+ end
10
+
11
+ def gen_differences
12
+ @differences = [ ]
13
+ ( @levels . size - 1 ) . times do |i |
14
+ @differences << @levels [ i + 1 ] - @levels [ i ]
15
+ end
16
+ end
17
+
18
+ def safe?
19
+ return false unless @differences . all? ( &:negative? ) or @differences . all? ( &:positive? )
20
+
21
+ @differences . all? { |d | d . abs >= 1 and d . abs <= 3 }
22
+ end
23
+ end
24
+
25
+ lines = File . read ( '02.input' ) . lines . map ( &:strip )
26
+
27
+ puts lines . count { |line | Report . new ( line ) . safe? }
Original file line number Diff line number Diff line change
1
+ #!/usr/bin/env ruby
2
+
3
+ class Report
4
+ attr_accessor :levels , :differences
5
+
6
+ def initialize ( line )
7
+ @levels = line . split . map ( &:to_i )
8
+ end
9
+
10
+ def safe_levels? ( levels )
11
+ differences = [ ]
12
+ ( levels . size - 1 ) . times do |i |
13
+ differences << levels [ i + 1 ] - levels [ i ]
14
+ end
15
+
16
+ return false unless differences . all? ( &:negative? ) or differences . all? ( &:positive? )
17
+
18
+ differences . all? { |d | d . abs >= 1 and d . abs <= 3 }
19
+ end
20
+
21
+ def safe?
22
+ return true if safe_levels? @levels
23
+
24
+ levels . combination ( levels . size - 1 ) . any? { |l | safe_levels? l }
25
+ end
26
+ end
27
+
28
+ lines = File . read ( '02.input' ) . lines . map ( &:strip )
29
+
30
+ puts lines . count { |line | Report . new ( line ) . safe? }
You can’t perform that action at this time.
0 commit comments