]> www.fi.muni.cz Git - aoc.git/blob - 2017/16.pl
Day 25: examining the input
[aoc.git] / 2017 / 16.pl
1 #!/usr/bin/perl
2
3 use v5.30;
4 use strict;
5
6 use List::Util qw(max);
7
8 my %regs;
9 my $max;
10 while (<>) {
11         chomp;
12         my ($reg, $op, $val, $creg, $cop, $cval) =
13                 /^(\w+) (\S\Sc) (-?\d+) if (\w+) (\S+) (-?\d+)/;
14         $regs{$reg} //= 0;
15         $regs{$creg} //= 0;
16         say "$reg $op $val $creg $cop $cval";
17         if ($cop eq '<' && $regs{$creg} < $cval
18                 || $cop eq '>' && $regs{$creg} > $cval
19                 || $cop eq '==' && $regs{$creg} == $cval
20                 || $cop eq '!=' && $regs{$creg} != $cval
21                 || $cop eq '<=' && $regs{$creg} <= $cval
22                 || $cop eq '>=' && $regs{$creg} >= $cval) {
23                 if ($op eq 'inc') {
24                         $regs{$reg} += $val;;
25                 } else {
26                         $regs{$reg} -= $val;
27                 }
28         }
29         my $m = max values %regs;
30         $max = $m if !$max || $max < $m;
31 }
32
33 say $max;
34
35