Code for the Advent of Code event
aoc
advent-of-code
1#!/usr/bin/env ruby
2# frozen_string_literal: true
3
4IP_MAX = 4_294_967_295
5
6ranges = $stdin.readlines.map { |line| Range.new(*line.split('-').map(&:to_i)) }
7
8ranges.sort! { |a, b| a.min <=> b.min }
9
10current = 0
11
12min = ranges.first.min
13max = ranges.first.max
14
15valid = 0 + min
16
17while (r = ranges.shift)
18 current = r.max + 1 if r === current
19
20 if r.min > max
21 valid += r.min - max - 1
22 _min = r.min
23 max = r.max
24 end
25
26 max = r.max if r.max > max
27end
28
29puts "(1) #{current}"
30puts "(2) #{valid}"