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') {
20 } elsif ($what eq 'turn off') {
26 say scalar grep { $lights{$_} } keys %lights;