diff --git a/2023/ruby/day_09.rb b/2023/ruby/day_09.rb new file mode 100644 index 0000000..3461a7b --- /dev/null +++ b/2023/ruby/day_09.rb @@ -0,0 +1,26 @@ +histories = ARGF.readlines.map { _1.scan(/-?\d+/).map(&:to_i) } + +# part one +p histories + .map {|history| + diffs = [history] + until diffs.last.all?(&:zero?) + diffs << diffs.last.each_cons(2).map { _2 - _1 } + end + + diffs.sum(&:last) + } + .sum + +# part two +p histories + .map {|history| + diffs = [history] + until diffs.last.all?(&:zero?) + diffs << diffs.last.each_cons(2).map { _2 - _1 } + end + + diffs.map(&:first).reverse.inject { _2 - _1 } + } + .sum +