• Create Account

Calling all IT Pros from Canada and Australia.. we need your help! Support our site by taking a quick sponsored surveyand win a chance at a \$50 Amazon gift card. Click here to get started!

### #ActualRavyne

Posted 28 January 2014 - 06:15 PM

#include <stdio.h>

int main (void)
{
#define P(A)printf(A,i,i,i)
#define B(A,P)#A" bottle"#P" of beer on the wall"
#define V(P)B(%d,P)", %d bottle"#P" of beer.\nTake one down and pass it around, "

int i=99;
P(V(s));

#define R B(%d,s)".\n\n"V(s)

while(--i>1)
P(R);

#define R B(1,\?\b)".\n\n"V(\?\b)

P(R B(no more,s)".\n\n"B(No more,s)", no more bottles of beer.\nGo to the store and buy some more, "B(99,s)".\n");
}


378 characters including significant whitespace, 396 with the #include . Output is perfect including caps, punctuation, newlines and final verses. I could probably hoist out a few #defines, or #define the #defines and save another 20-30 chars, but I'm weary of this exercise for the moment Gotta love code that only reads top to bottom!

### #1Ravyne

Posted 28 January 2014 - 06:10 PM

#define P(A)printf(A,i,i,i)
#define B(A,P)#A" bottle"#P" of beer on the wall"
#define V(P)B(%d,P)", %d bottle"#P" of beer.\nTake one down and pass it around, "

int i=99;
P(V(s));

#define R B(%d,s)".\n\n"V(s)

while(--i>1)
P(R);

#define R B(1,\?\b)".\n\n"V(\?\b)

P(R B(no more,s)".\n\n"B(No more,s)", no more bottles of beer.\nGo to the store and buy some more, "B(99,s)".\n");


366 characters including significant whitespace. Output is perfect including caps, punctuation, newlines and final verses. I could probably hoist out a few #defines, or #define the #defines and save another 20-30 chars, but I'm weary of this exercise for the moment Gotta love code that only reads top to bottom!

PARTNERS