[2019][ruby][6.x]
change tmlznrsmxzsmmmvntyxrmlwlmmywkxml
commit e9788c0c173326c8b410ca1201844020eb4ff909
author Alpha Chen <alpha@kejadlen.dev>
date
parent swxmqqku
diff --git a/2019/ruby/day_06.rb b/2019/ruby/day_06.rb
new file mode 100644
index 0000000..6173ff7
--- /dev/null
+++ b/2019/ruby/day_06.rb
@@ -0,0 +1,22 @@
+orbits = ARGF
+  .read.split("\n").map {|l| l.split(?)) }
+  .each.with_object(Hash.new {|h,k| h[k] = []}) {|(a, b), o|
+    o[a] << b
+  }
+
+roots = orbits.keys.select {|x| orbits.values.none? {|v| v.include?(x) }}
+
+depths = {}
+queue = roots.map {|x| [x, []] }
+until queue.empty?
+  x, a = queue.shift
+  depths[x] = a
+  a = a + [x]
+  queue.concat(orbits.fetch(x) { [] }.map {|y| [y, a] })
+end
+
+# p depths.values.map(&:size).sum
+
+you = depths.fetch("YOU")
+san = depths.fetch("SAN")
+p ((you + san) - (you & san)).size