Advent of Code solutions
1lines = ARGF.readlines().map { |l| l.chomp }
2
3def count lines, i
4 return lines
5 .filter { |line| line.chars[i] == "1" }
6 .length
7end
8
9oxygen = lines
1012.times do |i|
11 c = count(oxygen, i) >= oxygen.length / 2.0 ? "1" : "0"
12 oxygen = oxygen.filter { |line| line[i] == c }
13 break if oxygen.length == 1
14end
15
16carbon = lines
1712.times do |i|
18 c = count(carbon, i) >= carbon.length / 2.0 ? "0" : "1"
19 carbon = carbon.filter { |line| line[i] == c }
20 break if carbon.length == 1
21end
22
23
24puts(oxygen.first.to_i(2) * carbon.first.to_i(2))