14 if (/Begin in state (\w+)/) {
16 } elsif (/Perform a diagnostic checksum after (\d+) steps/) {
18 } elsif (/In state (\w+):/) {
20 } elsif (/If the current value is (\d):/) {
22 } elsif (/Write the value (\d)./) {
23 $st_write{$state,$val} = $1;
24 } elsif (/Move one slot to the (\w+)/) {
25 $st_move{$state,$val} = $1 eq 'right' ? 1 : -1;
26 } elsif (/Continue with state (\w+)/) {
27 $st_next{$state,$val} = $1;
33 while ($sum_steps--) {
34 my $val = $tape{$pos} ? 1 : 0;
35 $tape{$pos} = $st_write{$start_st,$val};
36 $pos += $st_move{$start_st,$val};
37 $start_st = $st_next{$start_st,$val};
40 use List::Util qw(sum);