aoc2020/day_15/both.rb

23 lines
440 B
Ruby

def run(start, target)
turn = start.size
number = start.last
numbers = Array.new(target) { 0 }
start[0..-2].each_with_index do |value, turn|
numbers[value] = turn + 1
end
(turn..target - 1).each do |turn|
next_num = numbers[number].eql?(0) ? 0 : turn - numbers[number]
numbers[number] = turn
number = next_num
end
number
end
input = [19, 0, 5, 1, 10, 13]
puts run input, 2020
puts run input, 30_000_000