From: Jan "Yenya" Kasprzak Date: Tue, 8 Dec 2020 09:48:19 +0000 (+0100) Subject: Speed optimization X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?p=aoc2020.git;a=commitdiff_plain;h=2a6c3f5d9d37c8a6e7ef96455120d5543470716c Speed optimization --- 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"; }