]> www.fi.muni.cz Git - aoc.git/blobdiff - 2015/24.pl
Year 2015
[aoc.git] / 2015 / 24.pl
diff --git a/2015/24.pl b/2015/24.pl
new file mode 100755 (executable)
index 0000000..f803084
--- /dev/null
@@ -0,0 +1,31 @@
+#!/usr/bin/perl -w
+
+use v5.16;
+use strict;
+
+use JSON qw(from_json);
+
+my $j = from_json(<>);
+
+my $sum;
+
+sub walk {
+       my $r = shift;
+       if (ref $r && ref $r eq 'ARRAY') {
+               for my $member (@$r) {
+                       walk($member);
+               }
+       } elsif (ref $r && ref $r eq 'HASH') {
+               for my $k (keys %$r) {
+                       return if $r->{$k} eq 'red';
+               }
+               for my $k (keys %$r) {
+                       walk($r->{$k});
+               }
+       } elsif ($r =~ /\A-?\d+\z/) {
+               $sum += $r;
+       }
+}
+
+walk($j);
+say $sum;