Code Golf’s 12th challenge has just been added to the site. It asks you
to calculate the first 1,000 digits of Pi - Something I’m sure most of
you have thought about, but never done. You can see the challenge at :
For those who haven’t heard of codegolf.com, it can be described as
“allowing you to show off your code-fu by trying to solve coding
problems using the least number of keystrokes.”
The site currently supports Perl, PHP, Python and Ruby with Scheme to
(hopefully) follow soon. Your entries are automatically executed and
scored - No need to wait for someone to validate your code.
Other challenges include implementing the Vigenere Cipher, Prime
factors, SHA-256 Hashing as well as the obvious 99 Bottles Of Beer. All
of the challenges are competitive but there is still scope to well in
them, even if you’re new to the site.
I hope some of you will find this interesting, and sorry for disturbing
you if not!
Code Golf’s 12th challenge has just been added to the site. It
asks you to calculate the first 1,000 digits of Pi - Something I’m
sure most of you have thought about, but never done. You can see
the challenge at :
Anyone have any idea how they’re safely running the code on the server?
Freaky freaky sandbox action?
No, Freaky freaky jail-and-chroot action - We can support pretty much
any language that way. I might finally get round to writing an article
about how we’re doing it, but I’ve been saying that for months, so I
wouldn’t hold my breath!
Code Golf’s 12th challenge has just been added to the site. It
asks you to calculate the first 1,000 digits of Pi - Something I’m
sure most of you have thought about, but never done. You can see
the challenge at :
They are still discussing it on their forums, but I just looked today
and tried out the 99 bottles of beer. I have the shortest Ruby (202
bytes), but I am only tied for 10th place overall. The best Perl entry
is kicking my butt at 176 bytes. I think this is probably due to the
slightly more verbose string interpolation in Ruby, but I am
interested in what could be done to further shrink my script:
@a=‘#{n} bottle#{n>1?:s:“”} of beer’
@b=" on the wall"
(n=99).times{puts eval""#@a#@b, #@a.\n#{n-=1;n<1?(n=99;‘Go to the
store and buy some more’):‘Take one down and pass it around’},
#@a#@b.\n\n""}
Wow, ya’ll are good code golfers! Of the few challenges I’ve been able
to solve so far, my solutions are much bigger than the winners (about
in the middle from smallest to largest). I guess I’m not gonna be the
Tiger Woods of code golfing. My best effort on the 99 bottles challenge
is 243 bytes
i="%d bottle%s of beer"
j=" on the wall"
k="\nTake one down and pass it around, "
l="\nGo to the store and buy some more, "
99.downto(1){|x|m=x-1>0?[k,x-1]:[l,99];n=i%[x,(:s if x>1)];
puts n+j+’, ‘+n+’.’+m[0]+i%[m[1],(:s if m[1]>1)]+j+".\n\n"}
They are still discussing it on their forums, but I just looked today
and tried out the 99 bottles of beer. I have the shortest Ruby (202
bytes), but I am only tied for 10th place overall. The best Perl entry
is kicking my butt at 176 bytes. I think this is probably due to the
slightly more verbose string interpolation in Ruby, but I am
interested in what could be done to further shrink my script:
Very good attempt! Unfortunately, the shortest Ruby is 186 bytes, but
both people who have got that score have better solutions in Perl, so
their Ruby entries don’t show on the Overall Leaderboard. (Each
language is scored individually as well as there being an overall
leaderboard.)
@a=‘#{n} bottle#{n>1?:s:“”} of beer’
@b=" on the wall"
(n=99).times{puts eval""#@a#@b, #@a.\n#{n-=1;n<1?(n=99;‘Go to the
store and buy some more’):‘Take one down and pass it around’},
#@a#@b.\n\n""}
You can save three bytes by including a literal newline instead of \n :
I tell you what though, if obfuscated code were the aim, you would
surely win!
Hehe! You should see some of my javascript bookmarklets! It’s kind of
fun to break all the rules of good programming though.
I like the use of :s to get the “s” to pluralise the
bottle, I’m sure I could use that somewhere.
I actually gipped that from Patrick’s code above (i.e., the ternary in @a).
I don’t know what tips to give you really, other that your code doesn’t
need to be that complicated! Stick in there though, it takes a bit of a
mindset change to golf.
Thanks! I don’t think I’m clever enough to beat most of the folks, but
it’s fun to try.
I got a 64 bytes version now, based on the “tiny c program” from http://www.boo.net/~jasonp/pipage.html
And it does calculate the digits, although i’m not yet sure how
I don’t care much for these rankings, so what would be a nice time to
post this without spoiling it for others?
99.downto(1){|x|m=x-1>0?[k,x-1]:[l,99];n=i%[x,(:s if x>1)];
puts n+j+’, ‘+n+’.’+m[0]+i%[m[1],(:s if m[1]>1)]+j+".\n\n"}
I tell you what though, if obfuscated code were the aim, you would
surely win! I like the use of :s to get the “s” to pluralise the
bottle, I’m sure I could use that somewhere.
I don’t know what tips to give you really, other that your code doesn’t
need to be that complicated! Stick in there though, it takes a bit of a
mindset change to golf.