Skip to content

Instantly share code, notes, and snippets.

@MikeRogers0
Created December 15, 2020 11:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save MikeRogers0/fb93d26fbf706fe72f9bc3af383dd22b to your computer and use it in GitHub Desktop.
Save MikeRogers0/fb93d26fbf706fe72f9bc3af383dd22b to your computer and use it in GitHub Desktop.
Advent of code 2020 Day 15
@input = [0,12,6,13,20,1,17]
@numbers = {}
@input.each_with_index do |input, index|
@numbers[input] = { count: 1, last_spoken_on: index + 1, last_spoken_before_on: nil }
end
@last_number_spoken = @input.last
@turn_count = @input.length + 1
while(@turn_count <= 30000000) do
if @numbers[@last_number_spoken][:count] == 1
@spoken_number = 0
elsif @numbers[@last_number_spoken][:count] > 1
@spoken_number = @numbers[@last_number_spoken][:last_spoken_on] - @numbers[@spoken_number][:last_spoken_before_on]
else
@spoken_number = 0
end
@numbers[@spoken_number] ||= {count: 0, last_spoken_on: nil, last_spoken_before_on: nil}
@numbers[@spoken_number][:last_spoken_before_on] = @numbers[@spoken_number][:last_spoken_on]
@numbers[@spoken_number][:last_spoken_on] = @turn_count
@numbers[@spoken_number][:count] += 1
@last_number_spoken = @spoken_number
@turn_count += 1
end
puts @spoken_number.inspect
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment