aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordrbaggy <js5@sanger.ac.uk>2021-07-05 23:20:42 +0100
committerdrbaggy <js5@sanger.ac.uk>2021-07-05 23:20:42 +0100
commit34ac8e96cb1a70825c5a9ef9ffb367488e5be968 (patch)
tree1f237f3f5f09ba55cac809e56399bca0cb041290
parent8ed3d4708d46cb83f51b0348cbebee560cdb87e5 (diff)
downloadperlweeklychallenge-club-34ac8e96cb1a70825c5a9ef9ffb367488e5be968.tar.gz
perlweeklychallenge-club-34ac8e96cb1a70825c5a9ef9ffb367488e5be968.tar.bz2
perlweeklychallenge-club-34ac8e96cb1a70825c5a9ef9ffb367488e5be968.zip
minor bug fix with blank lines
-rwxr-xr-xchallenge-120/james-smith/cesil/cesil.pl6
1 files changed, 3 insertions, 3 deletions
diff --git a/challenge-120/james-smith/cesil/cesil.pl b/challenge-120/james-smith/cesil/cesil.pl
index 3a5f568a77..674e52c434 100755
--- a/challenge-120/james-smith/cesil/cesil.pl
+++ b/challenge-120/james-smith/cesil/cesil.pl
@@ -4,15 +4,15 @@ my@t=('PROGRAM REQUIRES MORE DATA','UNKNOWN VARIABLE ',
'DIVISION BY ZERO ','UNKNOWN LABEL ');
sub _e{die sprintf "\n*** %s%s *** %s \@ %d\n",$t[$_[0]],@{$c[$p]}[1,0],1+$p}
sub _j{exists$q{$_}?($p=$q{$_}-1):_e 3}
-sub _v{/^[+-]?\d+$/?$_:exists$m{$_}?$m{$_}:_e 1}
+sub _v{/^[-+]?\d+$/?(0+$_):exists$m{$_}?$m{$_}:_e 1}
my%c=('LINE',sub{print"\n"},'OUT',sub{print$r},'STORE',sub{$m{$_}=$r},
'PRINT',sub{print s/^"//r=~s/"$//r},'IN',sub{@i?($r=shift@i):_e 0},
'JINEG',sub{_j if$r<0},'SUBTRACT',sub{$r-=_v},'MULTIPLY',sub{$r*=_v},
'ADD',sub{$r+=_v},'DIVIDE',sub{$_=_v;$r=$_?int($r/$_):_e 2},
'LOAD',sub{$r=_v},'JIZERO',sub{_j if!$r},'JUMP',sub{_j},'HALT',sub{exit});
-while(<>){next if/^ *\(/;((@i=map{/^\s+-?\d+\s*$/?0+$_:()}<>),last)if/^ *%/;
+while(<>){next if/^ *\(/;((@i=map{/^\s+[-+]?\d+\s*$/?0+$_:()}<>),last)if/^ *%/;
($q{$1},$_)=(0+@c,$2)if/^(\S{1,6})\s+(.*)/;
-my($x,$y)=split/\s+/,s/^\s+//r=~s/\s+$//r,2;
+my($x,$y)=split/\s+/,s/^\s+//r=~s/\s+$//r,2;next unless $x;
die"\n# Unk cmd [$x \@ ",1+@c,"]\n"if!exists$c{$x};push@c,[$x,$y//''];}
($c{$c[$p][0]}($_=$c[$p][1]),$p++)while--$M&&$p<@c;
die"\n*** No HALT ***\n"