diff --git a/2021/ruby/day_03.rb b/2021/ruby/day_03.rb new file mode 100644 index 0000000..317dbb4 --- /dev/null +++ b/2021/ruby/day_03.rb @@ -0,0 +1,23 @@ +bits = ARGF.read.split("\n").map(&:chars) + +gamma = bits.transpose.map {|a| a.tally.max_by(&:last).first }.join +epsilon = bits.transpose.map {|a| a.tally.min_by(&:last).first }.join +p gamma.to_i(2) * epsilon.to_i(2) + +oxy = bits.clone +(0..oxy.first.length).each do |i| + b = oxy.transpose.map {|a| a.tally.sort.reverse.max_by(&:last).first }[i] + oxy.select! {|x| x[i] == b } + break if oxy.length == 1 +end +oxy = oxy.join.to_i(2) + +co2 = bits.clone +(0..co2.first.length).each do |i| + b = co2.transpose.map {|a| a.tally.sort.min_by(&:last).first }[i] + co2.select! {|x| x[i] == b } + break if co2.length == 1 +end +co2 = co2.join.to_i(2) + +p oxy * co2