]> www.fi.muni.cz Git - aoc.git/blobdiff - 2015/11.pl
Year 2015
[aoc.git] / 2015 / 11.pl
diff --git a/2015/11.pl b/2015/11.pl
new file mode 100755 (executable)
index 0000000..cbad926
--- /dev/null
@@ -0,0 +1,27 @@
+#!/usr/bin/perl -w
+
+use v5.16;
+use strict;
+
+my %lights;
+
+$; = ',';
+
+while (<>) {
+       my ($what, $xmin, $ymin, $xmax, $ymax) = /^(.*) (\d+),(\d+) through (\d+),(\d+)/;
+       ($xmax, $xmin) = ($xmin, $xmax) if $xmin > $xmax;
+       ($ymax, $ymin) = ($ymin, $ymax) if $ymin > $ymax;
+       for my $x ($xmin .. $xmax) {
+       for my $y ($ymin .. $ymax) {
+               if ($what eq 'toggle') {
+                       $lights{$x,$y} = !$lights{$x,$y};
+               } elsif ($what eq 'turn on') {
+                       $lights{$x,$y} = 1;
+               } elsif ($what eq 'turn off') {
+                       $lights{$x,$y} = 0;
+               }
+       } }
+}
+
+say scalar grep { $lights{$_} } keys %lights;
+