]> www.fi.muni.cz Git - aoc.git/blob - 2015/11.pl
Day 25: examining the input
[aoc.git] / 2015 / 11.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} = !$lights{$x,$y};
18                 } elsif ($what eq 'turn on') {
19                         $lights{$x,$y} = 1;
20                 } elsif ($what eq 'turn off') {
21                         $lights{$x,$y} = 0;
22                 }
23         } }
24 }
25
26 say scalar grep { $lights{$_} } keys %lights;
27