]> www.fi.muni.cz Git - aoc.git/blob - 2019/04.pl
Day 25: examining the input
[aoc.git] / 2019 / 04.pl
1 #!/usr/bin/perl -w
2
3 use v5.16;
4
5 chomp (my @mem = split /,/, <>);
6
7 sub run {
8         my ($m1, $m2, @mem) = @_;
9         $mem[1] = $m1;
10         $mem[2] = $m2;
11         my $pc = 0;
12         while (1) {
13                 if ($mem[$pc] == 1) {
14                         $mem[ $mem[$pc+3] ] = $mem[ $mem[$pc+1] ] + $mem[ $mem[$pc+2] ];
15                 } elsif ($mem[$pc] == 2) {
16                         $mem[ $mem[$pc+3] ] = $mem[ $mem[$pc+1] ] * $mem[ $mem[$pc+2] ];
17                 } elsif ($mem[$pc] == 99) {
18                         last;
19                 }
20                 $pc += 4;
21         }
22         return $mem[0];
23 }
24
25 for my $n (0..99) {
26         for my $v (0..99) {
27                 say 100*$n + $v if run($n, $v, @mem) == 19690720;
28         }
29 }
30
31 say $mem[0];