]> www.fi.muni.cz Git - aoc.git/blob - 2017/19.pl
Day 25: examining the input
[aoc.git] / 2017 / 19.pl
1 #!/usr/bin/perl
2
3 use v5.30;
4 use strict;
5
6 my @l = split /[,\s]/, <>;
7
8 my $pos = 0;
9 my $skip = 0;
10 # my @nodes = (0 .. 4);
11 my @nodes = (0 .. 255);
12 my $n = @nodes;
13
14 for my $i (@l) {
15         my $end = $pos + $i;
16         my @to_rev;
17         say "pos=$pos skip $skip i=$i ", join(',', @nodes);
18         if ($end > $n) {
19                 push @to_rev, splice @nodes, $pos;
20                 push @to_rev, splice @nodes, 0, $end - $n;
21                 @to_rev = reverse @to_rev;
22                 say "to_rev = ", join(',', @to_rev);
23                 unshift @nodes, splice @to_rev, @to_rev-($end-$n);
24                 push @nodes, @to_rev;
25         } else {
26                 push @to_rev, splice @nodes, $pos, $i;
27                 splice @nodes, $pos, 0, reverse @to_rev;
28         }
29         $pos += $i + $skip++;;
30         $pos -= $n while $pos >= $n;
31 }
32
33 say join(',',@nodes);
34
35 say $nodes[0] * $nodes[1];