Code for the Advent of Code event
aoc advent-of-code
at rust 22 lines 612 B view raw
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)