26 lines
544 B
Ruby
26 lines
544 B
Ruby
# frozen_string_literal: true
|
|
|
|
input = File.readlines('./input').map(&:to_i)
|
|
preamble = 25
|
|
invalid_num = 21_806_024
|
|
|
|
input.each_with_index do |_line, i|
|
|
next if i < preamble
|
|
|
|
res = []
|
|
|
|
range = input[i - preamble, preamble]
|
|
|
|
range.each_index do |j|
|
|
res << range[i..-1] if range[i..-1]&.size.to_i > 1
|
|
preamble.times do |k|
|
|
res << range[j, k] if range[j, k]&.size > 1
|
|
end
|
|
end
|
|
out = res.uniq.select { |elems| elems.inject(:+) == invalid_num }
|
|
next if out.empty?
|
|
|
|
puts out.flatten.min + out.flatten.max
|
|
break
|
|
end
|