]> www.fi.muni.cz Git - aoc.git/blob - 2019/23.pl
Day 25: examining the input
[aoc.git] / 2019 / 23.pl
1 #!/usr/bin/perl -w
2
3 use v5.16;
4 use Data::Dumper;
5
6 my (@m, @v);
7 while (<>) {
8         my @row = /-?\d+/g;
9         push @m, [ @row ];
10         push @v, [ 0, 0, 0];
11 }
12
13 for (1 .. 1000) {
14         for my $m1 (0 .. $#m) {
15         for my $m2 (0 .. $#m) {
16                 next if $m1 == $m2;
17                 for my $c (0 .. 2) {
18                         $v[$m1][$c]++ if $m[$m1][$c] < $m[$m2][$c];
19                         $v[$m1][$c]-- if $m[$m1][$c] > $m[$m2][$c];
20                 }
21         } }
22         for my $m1 (0 .. $#m) {
23                 for my $c (0 .. 2) {
24                         $m[$m1][$c] += $v[$m1][$c];
25                 }
26         }
27         print Dumper \@m, \@v;
28 }
29
30 my $sum;
31 for my $m1 (0 .. $#m) {
32         my ($pot, $kin);
33         for my $c (0 .. 2) {
34                 $pot += abs($m[$m1][$c]);
35                 $kin += abs($v[$m1][$c]);
36         }
37         $sum += $pot*$kin;
38 }
39
40 say $sum;
41                 
42
43