From 7a2dee465dc8f88a2c4dc7c435de2ab50753e662 Mon Sep 17 00:00:00 2001 From: Alpha Chen Date: Sun, 6 Dec 2020 21:19:09 -0800 Subject: [PATCH] [2020][ruby][7.x] --- 2020/ruby/day_07.rb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 2020/ruby/day_07.rb diff --git a/2020/ruby/day_07.rb b/2020/ruby/day_07.rb new file mode 100644 index 0000000..22de895 --- /dev/null +++ b/2020/ruby/day_07.rb @@ -0,0 +1,16 @@ +require "set" + +rules = ARGF.read.split("\n") + .map {|line| line.split(" bags contain") }.to_h + .transform_values {|v| v.scan(/(\d+) ([\w ]+) bags?/).map(&:reverse).to_h } + +# bags = rules.select {|_,v| v.has_key?("shiny gold") }.map(&:first).to_set +# while true +# bags.merge(bags.flat_map {|bag| rules.select {|_,v| v.has_key?(bag) }.map(&:first) }) +# p bags.size +# end + +bags = Hash.new {|h,k| + h[k] = rules.fetch(k).map {|k,v| v.to_i + h[k] * v.to_i }.sum +} +p bags["shiny gold"]