Code for the Advent of Code event
aoc
advent-of-code
1#!/usr/bin/env ruby
2# frozen_string_literal: true
3
4RANGES = ARGF.readlines.to_h { |l| l.split.map(&:to_i) }
5MAX_DEPTH = RANGES.keys.max
6
7def walk(delay)
8 severity = 0
9 caught = false
10
11 (0..MAX_DEPTH).each do |depth|
12 range = RANGES[depth]
13 next if range.nil? || (depth + delay) % ((range * 2) - 2) != 0
14 severity += depth * range
15 caught = true
16 end
17
18 [caught, severity]
19end
20
21_, s = walk(0)
22puts s
23
24puts (10..).find { |d| !walk(d)[0] }