]> www.fi.muni.cz Git - aoc.git/blobdiff - 2015/12.pl
Year 2015
[aoc.git] / 2015 / 12.pl
diff --git a/2015/12.pl b/2015/12.pl
new file mode 100755 (executable)
index 0000000..4cc2191
--- /dev/null
@@ -0,0 +1,28 @@
+#!/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} += 2;
+               } elsif ($what eq 'turn on') {
+                       $lights{$x,$y}++;
+               } elsif ($what eq 'turn off') {
+                       $lights{$x,$y}-- if $lights{$x,$y};
+               }
+       } }
+}
+
+use List::Util qw(sum);
+say sum values %lights;
+