From 074fbc54d69612603a4f7f27d168d740a166fb54 Mon Sep 17 00:00:00 2001 From: Alpha Chen Date: Thu, 10 Dec 2020 08:49:14 -0800 Subject: [PATCH] [2020][ruby][10.x] refactor --- 2020/ruby/day_10.rb | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/2020/ruby/day_10.rb b/2020/ruby/day_10.rb index e562da7..ad67898 100644 --- a/2020/ruby/day_10.rb +++ b/2020/ruby/day_10.rb @@ -9,8 +9,21 @@ dist = (adapters + [outlet, device]).sort.each_cons(2).map {|a,b| b - a } # tally = dist.tally # p dist[1] * dist[3] +# programmatically figuring out the arrangements +# arrangements = Hash.new {|h,k| +# h[k] = (0..k-1).flat_map {|n| (2..k).to_a.combination(n).to_a } +# .reject {|c| (c << 1 << k+1).sort.each_cons(2).any? {|a,b| b-a > 3 }} +# .count +# } + +# tribonacci +arrangements = Hash.new {|h,k| h[k] = h[k-1] + h[k-2] + h[k-3] } +arrangements[0] = 1 +arrangements[1] = 1 +arrangements[2] = 2 + p dist .slice_when {|a,b| a != b } .select {|run| run.first == 1 } - .map {|run| { 1 => 1, 2 => 2, 3 => 4, 4 => 7 }.fetch(run.size) } + .map {|run| arrangements[run.size] } .inject {|a,b| a*b }