]> www.fi.muni.cz Git - aoc.git/blobdiff - 2017/15.pl
AoC 2017 begins
[aoc.git] / 2017 / 15.pl
diff --git a/2017/15.pl b/2017/15.pl
new file mode 100755 (executable)
index 0000000..9479114
--- /dev/null
@@ -0,0 +1,31 @@
+#!/usr/bin/perl
+
+use v5.30;
+use strict;
+
+
+my %regs;
+while (<>) {
+       chomp;
+       my ($reg, $op, $val, $creg, $cop, $cval) =
+               /^(\w+) (\S\Sc) (-?\d+) if (\w+) (\S+) (-?\d+)/;
+       $regs{$reg} //= 0;
+       $regs{$creg} //= 0;
+       say "$reg $op $val $creg $cop $cval";
+       if ($cop eq '<' && $regs{$creg} < $cval
+               || $cop eq '>' && $regs{$creg} > $cval
+               || $cop eq '==' && $regs{$creg} == $cval
+               || $cop eq '!=' && $regs{$creg} != $cval
+               || $cop eq '<=' && $regs{$creg} <= $cval
+               || $cop eq '>=' && $regs{$creg} >= $cval) {
+               if ($op eq 'inc') {
+                       $regs{$reg} += $val;;
+               } else {
+                       $regs{$reg} -= $val;
+               }
+       }
+}
+
+use List::Util qw(max);
+
+say max values %regs;