2019: Day 16 Part 2
This commit is contained in:
parent
c8452594c8
commit
c81a40b1cc
1 changed files with 25 additions and 0 deletions
25
2019/day16/part2.rb
Normal file
25
2019/day16/part2.rb
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
def run(text)
|
||||||
|
numbers = text.strip.split('').map(&:to_i) * 10_000
|
||||||
|
offset = numbers[0, 7].join.to_i
|
||||||
|
arr = numbers[offset..-1]
|
||||||
|
|
||||||
|
100.times do
|
||||||
|
# All coefficients are
|
||||||
|
# * 0: when before output index
|
||||||
|
# * 1: when at or after output index
|
||||||
|
# The pattern is long enough that there are no -1's or later 0's.
|
||||||
|
updated = []
|
||||||
|
total = arr.sum
|
||||||
|
arr.each do |elt|
|
||||||
|
updated << total.abs % 10
|
||||||
|
total -= elt
|
||||||
|
end
|
||||||
|
arr = updated
|
||||||
|
end
|
||||||
|
arr[0, 8].join
|
||||||
|
end
|
||||||
|
|
||||||
|
input = File.read(File.join(__dir__, 'input'))
|
||||||
|
puts run(input)
|
||||||
Loading…
Reference in a new issue