Steve Nelson wrote:
> A bunch of my friends and I have been chatting about "99 bottles of
> beer" - and how to make the shortest code to do it.  I have:
>
> for i in range(100,0,-1):
>    print "%s bottles of beer on the wall, %s bottles of beer\nTake on
> down, pass it around.."%(i,i)
> print "Go to the store, buy some more"
>
> I'm curious to know other ways to handle this - could it be done
> functionally?  How could we obfuscate this (not that we'd want to in
> real life)?  Or make it a (close to) one liner?
>
> Thanks.
>
> S.
> _______________________________________________
> Tutor maillist  -  [email protected]
> http://mail.python.org/mailman/listinfo/tutor
>
>   
one way to do it functionally:

def beer(i):a='%s bottles of beer';print "%s on the wall, %s.\nTake one 
down, pass it around.."%(a%i,a%i)
map(beer,range(100,0,-1))
print "Go to the store, buy some more"

definitely check out http://www.99-bottles-of-beer.net

the smallest version there is

By Oliver Xymoron (133 Bytes)

a,t="\n%s bottles of beer on the wall","\nTake one down, pass it around"
for d in range(99,0,-1):print(a%d*2)[:-12]+t+a%(d-1 or'No')


Note both of our examples and Oliver's examples don't handle the 
singular form correctly.
"1 bottles of beer" is not correct. "0 bottles of beer" is pushing it, 
it should be "no bottles of beer."
If you're trying to obfuscate it there are examples of that too,
just check out the python section.
http://www.99-bottles-of-beer.net/language-python-748.html

Enjoy!
_______________________________________________
Tutor maillist  -  [email protected]
http://mail.python.org/mailman/listinfo/tutor

Reply via email to