Advent of Code solutions
at main 24 lines 560 B view raw
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))