35 lines
733 B
Perl
35 lines
733 B
Perl
|
use 5.20.0;
|
||
|
|
||
|
my $state = 'A';
|
||
|
|
||
|
use experimental qw/ smartmatch /;
|
||
|
use List::AllUtils qw/ sum /;
|
||
|
|
||
|
my $iteration;
|
||
|
|
||
|
my @ribbon;
|
||
|
my $ri = 0;
|
||
|
|
||
|
my %chain = (
|
||
|
A => [ [ 1, 1, 'B' ], [ 0, -1, 'C' ] ],
|
||
|
B => [ [ 1, -1, 'A' ], [ 1, 1, 'D' ] ],
|
||
|
C => [ [ 0, -1, 'B' ], [ 0, -1, 'E' ] ],
|
||
|
D => [ [ 1, 1, 'A' ], [ 0, 1, 'B' ] ],
|
||
|
E => [ [ 1, -1, 'F' ], [ 1, -1, 'C' ] ],
|
||
|
F => [ [ 1, 1, 'D' ], [ 1, 1, 'A' ] ],
|
||
|
);
|
||
|
|
||
|
while( $iteration++ <= 1_2481_997 ) {
|
||
|
say $iteration unless $iteration % 100_000;
|
||
|
my $change = $chain{$state}[ $ribbon[$ri] ];
|
||
|
$ribbon[$ri] = $change->[0];
|
||
|
$ri += $change->[1];
|
||
|
if( $ri == -1 ) {
|
||
|
unshift @ribbon, 0;
|
||
|
$ri = 0;
|
||
|
}
|
||
|
$state = $change->[2];
|
||
|
}
|
||
|
|
||
|
say sum @ribbon;
|