From 379fc7f2e9754728aa1f7b886a39469a3f0d5965 Mon Sep 17 00:00:00 2001 From: Johnathon Slightham Date: Tue, 12 Dec 2023 00:44:21 -0500 Subject: [PATCH] Day 9 --- 2023/day9/p1.rb | 13 +++++++++++++ 2023/day9/p2.rb | 11 +++++++++++ 2 files changed, 24 insertions(+) create mode 100644 2023/day9/p1.rb create mode 100644 2023/day9/p2.rb diff --git a/2023/day9/p1.rb b/2023/day9/p1.rb new file mode 100644 index 0000000..ff852be --- /dev/null +++ b/2023/day9/p1.rb @@ -0,0 +1,13 @@ +# frozen_string_literal: true + +inputs = [] +File.foreach('./2023/day9/data') do |line| + inputs << line.split(' ').map(&:to_i) +end + +def add_derivative(inputs) + return 0 if inputs.all?(&:zero?) + inputs[-1] + add_derivative(inputs.map.with_index { |x, i| i.zero? ? x : x - inputs[i - 1] }[1..inputs.length]) +end + +puts inputs.map { |input| add_derivative input }.sum diff --git a/2023/day9/p2.rb b/2023/day9/p2.rb new file mode 100644 index 0000000..3339ba2 --- /dev/null +++ b/2023/day9/p2.rb @@ -0,0 +1,11 @@ +inputs = [] +File.foreach('./2023/day9/data') do |line| + inputs << line.split(' ').map(&:to_i) +end + +def add_derivative(inputs) + return 0 if inputs.all?(&:zero?) + inputs[-1] - add_derivative(inputs.map.with_index { |x, i| i.zero? ? x : inputs[i - 1] - x }[1..inputs.length]) +end + +puts inputs.map { |input| add_derivative input.reverse }.sum