Something went wrong. Try again.
Code for the Advent of Code event
aoc advent-of-code
Something went wrong. Try again.
678 B · 30 lines
Ruby
at rust
12345678910111213141516171819202122232425262728293031#!/usr/bin/env ruby# frozen_string_literal: true
numbers = ARGF.readline.split(',').map(&:to_i)boards = ARGF.read.split("\n\n").map { |b| b.strip.split("\n").map { _1.split.map(&:to_i) } }
marked = Set.newwinners = []
numbers.each do |number| marked << number
winner, boards = boards.partition do |board| (board + board.transpose).any? { |l| l.all? { marked.include? _1 } } end
winner = winner.first
next unless winner
winners << [winner, number, marked.dup]
break if boards.empty?end
fb, fn, fm = winners.firstlb, ln, lm = winners.last
puts fb.flatten.reject { |n| fm.include? n }.sum * fnputs lb.flatten.reject { |n| lm.include? n }.sum * ln