in reply to (Golf) Let's go bowling
Doing it with substitutions
Update: This fixes a bug pointed out by dragonchild
And another correction:
s!\d,/,(\d)(\b)!10+$1.",$1$2"!eg;
should be
while(s!\d,/,(\d)(\b)!10+$1.",$1$2"!eg){}
for multiple spare frames in a row to work.
223 chars not counting the unnecessary whitespace for the body of the function. It's not the lowest bytecount here, but at least it's lower than my bowling highscore.sub bowlscore { my $t; $_=join(',',@_); while(s/X,X,X/30,X,X/){} s!X,X,(\d)!20+$1.",X,$1"!eg; s!X,(\d),(\d)!10+$1+$2.",$1,$2"!eg; s!X,\d,/!20,1,/!g; s!\d,/,(\d)(\b)!10+$1.",$1$2"!eg; s!\d,/(?=,\d\d)!20!g; s!(\d\d)(,\d){1,2}$!$1!; map($t+=$_,split(/,/)); $t; }
Update: This fixes a bug pointed out by dragonchild
10 chars added.sub bowlscore { my $t; $_=join(',',@_); while(s/X,X,X/30,X,X/){} s!X,X,(\d)!20+$1.",X,$1"!eg; s!X,(\d),(\d)!10+$1+$2.",$1,$2"!eg; s!X,\d,/!20,0,/!g; s!/,X!20!; s!\d,/,(\d)(\b)!10+$1.",$1$2"!eg; s!\d,/(?=,\d\d)!20!g; s!(\d\d)(,\d){1,2}$!$1!; map($t+=$_,split(/,/)); $t; }
And another correction:
s!\d,/,(\d)(\b)!10+$1.",$1$2"!eg;
should be
while(s!\d,/,(\d)(\b)!10+$1.",$1$2"!eg){}
for multiple spare frames in a row to work.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Re: (Golf) Let's go bowling
by dragonchild (Archbishop) on Aug 08, 2001 at 22:22 UTC | |
by nardo (Friar) on Aug 08, 2001 at 22:31 UTC | |
by dragonchild (Archbishop) on Aug 08, 2001 at 22:40 UTC | |
Re: Re: (Golf) Let's go bowling
by dragonchild (Archbishop) on Aug 08, 2001 at 22:58 UTC |
In Section
Meditations