[2020][ruby][7.x]
change vttsnplzpmuvsopnxwlwoxwvuyykywop
commit 509faf94c19ac8bfec8feebcdbbe30e90ed5d3c8
author Alpha Chen <alpha@kejadlen.dev>
date
parent tlokwnnm
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"]