]> www.fi.muni.cz Git - aoc.git/blob - 2015/12.pl
Year 2015
[aoc.git] / 2015 / 12.pl
1 #!/usr/bin/perl -w
2
3 use v5.16;
4 use strict;
5
6 my %lights;
7
8 $; = ',';
9
10 while (<>) {
11         my ($what, $xmin, $ymin, $xmax, $ymax) = /^(.*) (\d+),(\d+) through (\d+),(\d+)/;
12         ($xmax, $xmin) = ($xmin, $xmax) if $xmin > $xmax;
13         ($ymax, $ymin) = ($ymin, $ymax) if $ymin > $ymax;
14         for my $x ($xmin .. $xmax) {
15         for my $y ($ymin .. $ymax) {
16                 if ($what eq 'toggle') {
17                         $lights{$x,$y} += 2;
18                 } elsif ($what eq 'turn on') {
19                         $lights{$x,$y}++;
20                 } elsif ($what eq 'turn off') {
21                         $lights{$x,$y}-- if $lights{$x,$y};
22                 }
23         } }
24 }
25
26 use List::Util qw(sum);
27 say sum values %lights;
28