X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?p=aoc2020.git;a=blobdiff_plain;f=16.pl;h=899e942b5897d4cc0c626414a2a0886486ab6eb6;hp=3447bfd5c587e24d93ed357508babff29f7ec074;hb=HEAD;hpb=6e13a909884a11a5f73d465fa5828f2be2f0b82d diff --git a/16.pl b/16.pl index 3447bfd..899e942 100755 --- a/16.pl +++ b/16.pl @@ -7,23 +7,23 @@ my @code = map { [ split /\s+/ ] } <>; for my $i (0 .. $#code) { if ($code[$i]->[0] eq 'nop') { local $code[$i]->[0] = 'jmp'; - interp(@code); + interp(\@code); } elsif ($code[$i]->[0] eq 'jmp') { local $code[$i]->[0] = 'nop'; - interp(@code); + interp(\@code); } } sub interp { - my @code = @_; + my ($code) = @_; my $acc = 0; my $pc = 0; my %seen; - while (!$seen{$pc} && $pc != @code) { + while (!$seen{$pc} && $pc != @$code) { $seen{$pc} = 1; - my ($ins, $arg) = @{ $code[$pc] }; - print "pc=$pc, acc=$acc, $ins $arg\n"; + my ($ins, $arg) = @{ $code->[$pc] }; + # print "pc=$pc, acc=$acc, $ins $arg\n"; if ($ins eq 'nop') { $pc++; } elsif ($ins eq 'acc') { @@ -32,9 +32,9 @@ sub interp { $pc += $arg; } } - if ($pc == @code) { + if ($pc == @$code) { print "terminating with acc=$acc.\n"; exit 0; } - print "\n"; + # print "\n"; }