about summary refs log tree commit diff
path: root/day12.rb
diff options
context:
space:
mode:
Diffstat (limited to 'day12.rb')
-rw-r--r--day12.rb37
1 files changed, 37 insertions, 0 deletions
diff --git a/day12.rb b/day12.rb
new file mode 100644
index 0000000..c8af5cf
--- /dev/null
+++ b/day12.rb
@@ -0,0 +1,37 @@
+require 'json'
+
+d = JSON.parse(File.read("day12"))
+
+def sum(o)
+  case o
+  when Hash
+    sum o.values
+  when Array
+    o.inject(0) { |a,e| a + sum(e) }
+  when Numeric
+    o
+  else
+    0
+  end
+end
+
+def sum2(o)
+  case o
+  when Hash
+    if o.values.include?("red")
+      0
+    else
+      sum2 o.values
+    end
+  when Array
+    o.inject(0) { |a,e| a + sum2(e) }
+  when Numeric
+    o
+  else
+    0
+  end
+end
+
+p sum(d)
+
+p sum2(d[2][7]["h"]["c"][0]) # 96852