From 2a6c3f5d9d37c8a6e7ef96455120d5543470716c Mon Sep 17 00:00:00 2001 From: "Jan \"Yenya\" Kasprzak" Date: Tue, 8 Dec 2020 10:48:19 +0100 Subject: [PATCH] Speed optimization --- 16.pl | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) 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"; } -- 2.43.0