From 7f46f39d8d3c9e86e124f771455ca757248f253f Mon Sep 17 00:00:00 2001 From: Alpha Chen Date: Tue, 8 Dec 2020 22:10:58 -0800 Subject: [PATCH] [2020][ruby][9.x] refactor --- 2020/ruby/day_09.rb | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/2020/ruby/day_09.rb b/2020/ruby/day_09.rb index 11be750..646f879 100644 --- a/2020/ruby/day_09.rb +++ b/2020/ruby/day_09.rb @@ -2,19 +2,17 @@ N = 25 data = ARGF.read.scan(/\d+/).map(&:to_i) -i = (N..).find {|i| - !data[i-N,N].combination(2).map(&:sum).include?(data[i]) -} -invalid = data[i] +invalid = data.each_cons(N+1).filter_map {|range| + n = range.pop + range.combination(2).map(&:sum).include?(n) ? nil : n +}.first -(0..).each do |start| - (2..data.size-start-1).each do |len| - sum = data[start, len].sum - if sum == invalid - p data[start, len].minmax.sum - exit - elsif sum > invalid - next - end - end -end +weakness = (0..).lazy.flat_map {|start| + (2..data.size-start-1).map {|len| + data[start, len] + } +}.filter_map {|range| + range.sum == invalid && range.minmax.sum +}.first + +p weakness