Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change

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

by tye (Sage)
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")

Replies are listed 'Best First'.
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//)


      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?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://104459]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (4)
As of 2017-04-26 00:35 GMT
Find Nodes?
    Voting Booth?
    I'm a fool:

    Results (466 votes). Check out past polls.