From c8452594c8b993099e3a263edbed1080aa300d13 Mon Sep 17 00:00:00 2001 From: Jeremy Kaplan Date: Sun, 15 Dec 2019 21:52:41 -0800 Subject: [PATCH] 2019: Day 16 Part 1 --- 2019/day16/part1.rb | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 2019/day16/part1.rb diff --git a/2019/day16/part1.rb b/2019/day16/part1.rb new file mode 100644 index 0000000..491a049 --- /dev/null +++ b/2019/day16/part1.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +def fft(input) + base = [0, 1, 0, -1] + input.each_with_index.map do |_n, i| + pattern = base.flat_map { |e| [e] * (i + 1) } + pattern *= (input.length.fdiv pattern.length).ceil + 1 + pattern.shift + cross(input, pattern[0...input.length]) + end +end + +def cross(input, pattern) + total = input.zip(pattern).sum { |a, b| a * b } + total.abs % 10 +end + +input = File.read(File.join(__dir__, 'input')) +numbers = input.strip.split('').map(&:to_i) + +100.times do |_i| + numbers = fft(numbers) +end +puts numbers[0, 8].join