Skip to content

Commit fd0e32e

Browse files
committed
Day 2 Ruby solutions
1 parent 8a8aea7 commit fd0e32e

File tree

2 files changed

+57
-0
lines changed

2 files changed

+57
-0
lines changed

02-1.rb

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
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? }

02-2.rb

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
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? }

0 commit comments

Comments
 (0)