Comments on 99 Shortened Bottles of Beer
Parent
99 Shortened Bottles of Beer
Disclaimer
This challenge also exists in CGCC, but if you want to compete here (too), then hop in!
Challenge
Recreate "99 Bottles of Beer on the Wall", using the least bytes possible.
Lyrics:
99 bottles of beer on the wall, 99 bottles of beer.
Take one down and pass it around, 98 bottles of beer on the wall.
98 bottles of beer on the wall, 98 bottles of beer.
Take one down and pass it around, 97 bottles of beer on the wall.
97 bottles of beer on the wall, 97 bottles of beer.
Take one down and pass it around, 96 bottles of beer on the wall.
96 bottles of beer on the wall, 96 bottles of beer.
Take one down and pass it around, 95 bottles of beer on the wall.
95 bottles of beer on the wall, 95 bottles of beer.
Take one down and pass it around, 94 bottles of beer on the wall.
....
3 bottles of beer on the wall, 3 bottles of beer.
Take one down and pass it around, 2 bottles of beer on the wall.
2 bottles of beer on the wall, 2 bottles of beer.
Take one down and pass it around, 1 bottle of beer on the wall.
1 bottle of beer on the wall, 1 bottle of beer.
Go to the store and buy some more, 99 bottles of beer on the wall.
Rules
- 0-byte answers aren't allowed. Although 1-byte answers are allowed while still abiding to not using loopholes, they won't be very interesting (unless you DO make it interesting).
- Use any form of output in the program. Yes, the whole thing must be outputted up until you reach $n=1$.
- Built-in functions and/or code for this specific challenge is pretty much allowed, only if you explain (even a little) how the code works (or not if you can't at all).
- Shortest program of each language used is the winner.
[Java (JDK)], 311 301 296 byte …
3y ago
[Python 3], 202 bytes …
3y ago
FALSE, 198 bytes ``` [" on t …
3y ago
[C (gcc)], 244 bytes …
3y ago
[C (gcc)], 232 bytes …
3y ago
[Haskell], 221 215 bytes …
3y ago
[Scala], 242 bytes …
3y ago
[shortC], 223 bytes AOC …
3y ago
JavaScript (V8), 185 bytes …
3y ago
Japt, 117 116 115 bytes Nee …
3y ago
[JavaScript (Node.js)], 228 22 …
3y ago
Sclipting, (UTF-16) 238 bytes …
3y ago
[Seriously], 1 byte N …
3y ago
Post
C (gcc), 232 bytes
f(n,w,p){printf("%i bottle%s of beer%s%s",n,"s"+(n<2)," on the wall"+w,p);}main(i){for(i=99;i;){f(i,0,", ");f(i,12,".\n");printf(i>1?"Take one down and pass it around, ":"Go to the store and buy some more, ");f(--i?:99,0,".\n\n");}}
Main golfing techniques:
-
The repetitive part has been put into a function
-
conditional strings are sometimes implemented using pointer arithmetic, using the fact that C strings are zero terminated character arrays
-
The code uses the implicit int rule
-
I'm passing a pointer through an int argument which then in turn is interpreted as a pointer by
printf
(not portable and definitely not clean; allows me to use the implicit int rule for that argument) -
The gcc extension
condition?:value
(givecondition
unless that is zero, in which case givevalue
) is used to save one character -
The printf function is declared implicitly (which isn't guaranteed to work by any C standard, but works just fine in practice by any compiler that allows implicit declarations), saving the 18 characters that would otherwise be needed for
#include<stdio.h>
(including the mandatory line break following that directive)
2 comment threads