Code for the Advent of Code event
aoc
advent-of-code
1#!/usr/bin/env ruby
2# frozen_string_literal: true
3
4input = ARGF.readlines.map(&:strip)
5
6puts input.first.size.times.map { |i| input.map { _1[i] }.tally }.map { |f| f.minmax_by { _2 } }.map { _1.map(&:first) }.transpose.map { _1.join.to_i(2) }.reduce(:*)
7
8oxy = input.dup
9input.first.size.times do |i|
10 tally = oxy.map { _1[i] }.tally
11 m = tally.max_by { |k, v| [v, k] }.first
12 oxy.select! { _1[i] == m }
13end
14
15co2 = input.dup
16input.first.size.times do |i|
17 tally = co2.map { _1[i] }.tally
18 m = tally.min_by { |k, v| [v, k] }.first
19 co2.select! { _1[i] == m }
20end
21
22puts oxy.first.to_i(2) * co2.first.to_i(2)