about summary refs log tree commit diff
path: root/day12.rb
diff options
context:
space:
mode:
authorChristian Neukirchen <chneukirchen@gmail.com>2015-12-12 14:57:41 +0100
committerChristian Neukirchen <chneukirchen@gmail.com>2015-12-12 14:57:41 +0100
commitbfab0ac65ae9860285c66704e260dde434d5da1f (patch)
tree49da0d2bedc8f15f38c8a0b1dbbc59d835c6d730 /day12.rb
parent54b99d9049559d9c562ed27bdad0dc855141878d (diff)
downloadadventofcode2015-bfab0ac65ae9860285c66704e260dde434d5da1f.tar.gz
adventofcode2015-bfab0ac65ae9860285c66704e260dde434d5da1f.tar.xz
adventofcode2015-bfab0ac65ae9860285c66704e260dde434d5da1f.zip
day12
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