Beefy Boxes and Bandwidth Generously Provided by pair Networks
XP is just a number
 
PerlMonks  

(tye)Re2: (Golf) Let's go bowling (98!)

by tye (Cardinal)
on Aug 13, 2001 at 19:27 UTC ( #104459=note: print w/ replies, xml ) Need Help??


in reply to (tye)Re: (Golf) Let's go bowling
in thread (Golf) Let's go bowling

I got down to 98:

sub bowl { $_=pop; s#(\d)(\d|(/))(?=(.))|X(?=(..))|.#$3.$5?"X$4$5":$1.$2#ge; s#./#X#g; map{(y.X.a.)x hex}split// }

        - tye (but my friends call me "Tye")


Comment on (tye)Re2: (Golf) Let's go bowling (98!)
Download Code
Re: (tye)Re2: (Golf) Let's go bowling (98!)
by petral (Curate) on Aug 14, 2001 at 01:59 UTC
    Same thing that caught me:
    print bowl(join'', qw(0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 X 3 4)); 53!
    should be 60.
    (but you can save a few strokes using /./g for split//)

      p

      Darn. I noticed elsewhere in the thread about being sure to not count the bonus balls twice but missed the stuff about there being no good trick to tell whether X\d\d$ is a final frame with bonus balls or just the two final frames (other than counting frames). ):

      I really didn't want to hard-code the number of frames because sometimes I'll bowl a "short game" when we run out of time. So here is an entry at 113 strokes that optionally lets you specify how many frames you shortened your game (you can even pass in a negative value for "extra long games"):

      sub bowl { ($_,$n)=@_; s#(\d)(\d|/(?=(.)))|X(?=(..))|.# ($3.$4?"X$3$4":$1.$2,"")[9<$n++]#ge; s#./#X#g; map{(y.X.a.)x hex}split// } chomp( @ARGV=<DATA> ) if ! @ARGV; for my $line ( @ARGV ) { print "$line = ", 0+bowl($line), "\n "; for( 0..9 ) { print " ",0+bowl($line,9-$_); } print $/; } __END__ 81633470434/72813/62 81633470434/72813/X18 X00X00X00X00X00 00X00X00X00X00X00 X11X11X11X11X11 11X11X11X11X11X11 5/63XX7043X4/813/6
      This even allowed me to add a test suite that shows the score at each frame.

              - tye (but my friends call me "Tye")
        Awesome. But, um, you can combine the last 2 lines (and return a scalar):  s#./|X#9#g+eval join'+',/./g
        (and I still don't understand how that `|.' guard is working.)

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://104459]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (7)
As of 2014-08-01 10:05 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Who would be the most fun to work for?















    Results (0 votes), past polls