day 25
This commit is contained in:
parent
4df9256d63
commit
1cf528262b
34
25/1.pl
Normal file
34
25/1.pl
Normal file
@ -0,0 +1,34 @@
|
||||
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;
|
59
25/input.yaml
Normal file
59
25/input.yaml
Normal file
@ -0,0 +1,59 @@
|
||||
In state A:
|
||||
If the current value is 0:
|
||||
- Write the value 1.
|
||||
- Move one slot to the right.
|
||||
- Continue with state B.
|
||||
If the current value is 1:
|
||||
- Write the value 0.
|
||||
- Move one slot to the left.
|
||||
- Continue with state C.
|
||||
|
||||
In state B:
|
||||
If the current value is 0:
|
||||
- Write the value 1.
|
||||
- Move one slot to the left.
|
||||
- Continue with state A.
|
||||
If the current value is 1:
|
||||
- Write the value 1.
|
||||
- Move one slot to the right.
|
||||
- Continue with state D.
|
||||
|
||||
In state C:
|
||||
If the current value is 0:
|
||||
- Write the value 0.
|
||||
- Move one slot to the left.
|
||||
- Continue with state B.
|
||||
If the current value is 1:
|
||||
- Write the value 0.
|
||||
- Move one slot to the left.
|
||||
- Continue with state E.
|
||||
|
||||
In state D:
|
||||
If the current value is 0:
|
||||
- Write the value 1.
|
||||
- Move one slot to the right.
|
||||
- Continue with state A.
|
||||
If the current value is 1:
|
||||
- Write the value 0.
|
||||
- Move one slot to the right.
|
||||
- Continue with state B.
|
||||
|
||||
In state E:
|
||||
If the current value is 0:
|
||||
- Write the value 1.
|
||||
- Move one slot to the left.
|
||||
- Continue with state F.
|
||||
If the current value is 1:
|
||||
- Write the value 1.
|
||||
- Move one slot to the left.
|
||||
- Continue with state C.
|
||||
|
||||
In state F:
|
||||
If the current value is 0:
|
||||
- Write the value 1.
|
||||
- Move one slot to the right.
|
||||
- Continue with state D.
|
||||
If the current value is 1:
|
||||
- Write the value 1.
|
||||
- Move one slot to the right.
|
||||
- Continue with state A.
|
Loading…
Reference in New Issue
Block a user