Code for the Advent of Code event
aoc
advent-of-code
1#!/usr/bin/env ruby
2# frozen_string_literal: true
3
4require 'matrix'
5
6reactor = {}
7
8ARGF.each_line do |line|
9 puts "Processing: #{line}"
10 op, ranges = line.split
11 next if ranges.nil? || ranges == ''
12 op = op == 'on'
13 xrange, yrange, zrange = ranges.scan(/-?\d+\.\.-?\d+/).map { eval(_1) }
14 xrange.each do |x|
15 next if x < -50 || x > 50
16 yrange.each do |y|
17 next if y < -50 || y > 50
18 zrange.each do |z|
19 next if z < -50 || z > 50
20 pos = Vector[x, y, z]
21 reactor[pos] = op
22 end
23 end
24 end
25end
26
27puts reactor.values.count(true)