Skip to content

Instantly share code, notes, and snippets.

@carlwiedemann
Created December 11, 2023 16:53
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 carlwiedemann/7f6bee230f39905daf1f2259617a8d51 to your computer and use it in GitHub Desktop.
Save carlwiedemann/7f6bee230f39905daf1f2259617a8d51 to your computer and use it in GitHub Desktop.
Advent of Code 2023 day009.rb
require_relative "main"
module Day009
INPUT = File.read('INPUT.txt')
lines = INPUT.to_lines
sets = lines.map do |line|
line.split(" ").map(&:to_i)
end
##########
# Part 1 #
##########
t1 = 0
t2 = 0
sets.each do |set|
layers = [set]
target_layer = set
loop do
diffs = target_layer.each_cons(2).map do |a, b|
b - a
end
layers.push(diffs)
break if diffs.all?(0)
target_layer = diffs
end
layers.last.push(0)
layers.last.unshift(0)
layers.reverse.each_cons(2) do |layer, layer_next|
layer_next.push(layer.last + layer_next.last)
layer_next.unshift(layer_next.first - layer.first)
end
t1 += set.last
t2 += set.first
end
answer1 = t1
pp answer1
##########
# Part 2 #
##########
answer2 = t2
pp answer2
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment