]> www.fi.muni.cz Git - aoc.git/blob - 2015/24.pl
Day 25: examining the input
[aoc.git] / 2015 / 24.pl
1 #!/usr/bin/perl -w
2
3 use v5.16;
4 use strict;
5
6 use JSON qw(from_json);
7
8 my $j = from_json(<>);
9
10 my $sum;
11
12 sub walk {
13         my $r = shift;
14         if (ref $r && ref $r eq 'ARRAY') {
15                 for my $member (@$r) {
16                         walk($member);
17                 }
18         } elsif (ref $r && ref $r eq 'HASH') {
19                 for my $k (keys %$r) {
20                         return if $r->{$k} eq 'red';
21                 }
22                 for my $k (keys %$r) {
23                         walk($r->{$k});
24                 }
25         } elsif ($r =~ /\A-?\d+\z/) {
26                 $sum += $r;
27         }
28 }
29
30 walk($j);
31 say $sum;