Something went wrong. Try again.
Code for the Advent of Code event
aoc advent-of-code
Something went wrong. Try again.
698 B · 28 lines
Ruby
at rust
1234567891011121314151617181920212223242526272829#!/usr/bin/env ruby# frozen_string_literal: true
input = ARGF.read.lines
games = input.map.with_index do |line, i| sets = line.split(':')[1].split(';').map do |set| set.split(',').to_h do |c| c.split.then { [_2[0].to_sym, _1.to_i] } end.tap { _1.default = 0 } end { id: i + 1, sets: sets, mins: Hash.new(0) }end
count = games.sum do |game| valid = true game[:sets].each do |set| set.each do |c, n| valid = false if (c == :r && n > 12) || (c == :g && n > 13) || (c == :b && n > 14) game[:mins][c] = n if n > game[:mins][c] end end game[:power] = game[:mins].values.reduce(:*) valid ? game[:id] : 0end
puts countputs games.sum { _1[:power] }