]> www.fi.muni.cz Git - aoc.git/blob - 2022/40.pl
b6e9ff429e77485cdecc5346f277930fbbec0697
[aoc.git] / 2022 / 40.pl
1 #!/usr/bin/perl -w
2
3 use v5.36;
4 use strict;
5
6 my $key = 811589153;
7 my @list = map { $key * $_ } <>;
8 my @perm = ( 0 .. $#list );
9
10 for (1 .. 10) {
11         for my $idx (0 .. $#list) {
12                 my $move = $list[$idx];
13                 my $pos = 0;
14                 $pos++ while $perm[$pos] != $idx;
15                 splice(@perm, $pos, 1);
16                 my $dst = ($pos + $move) % @perm;
17                 splice(@perm, $dst, 0, $idx);
18         }
19 }
20
21 my @ordered = map { $list[$perm[$_]] } 0 .. $#list;
22
23 my $i = 0;
24 $i++ while $ordered[$i] != 0;
25
26 my $sum;
27 for (1 .. 3) {
28         $i += 1000;
29         $i %= @ordered;
30         $sum += $ordered[$i];
31 }
32
33 say $sum;