[ create a new paste ] login | about

Link: http://codepad.org/rERfAVJA    [ raw code | output | fork ]

C, pasted on Oct 7:
#include <stdio.h>

#define FBGNEST_MAX 32

#define p(in) {\
    char *list[FBGNEST_MAX];\
    int cnt = 0;\
    int n;\
    fbg st;\
    int i;\
    \
    fbg fbgfunc(int m,char *str){\
        if(n%m==0)list[cnt++]=str;\
        return st;\
    }\
    fbg new(int b){n=b;return st;}\
    \
    /* 追加箇所1 */\
    fbg fizz(){return fbgfunc(3,"Fizz");}\
    fbg buzz(){return fbgfunc(5,"Buzz");}\
    fbg gizz(){return fbgfunc(7,"Gizz");}\
    \
    /* 追加箇所2 */\
    st.fizz = fizz;\
    st.buzz = buzz;\
    st.gizz = gizz;\
    \
    for(i=0;i<FBGNEST_MAX;i++)list[i]=NULL;\
    in;\
    \
    if(cnt==0){\
        printf("%d\n",n);\
    }else{\
        for(i=0;i<cnt;i++){\
            printf(list[i]);\
        }\
        printf("\n");\
    }\
}

typedef struct fbg_ {
    /* 追加箇所3 */
    struct fbg_ (*fizz)();
    struct fbg_ (*buzz)();
    struct fbg_ (*gizz)();
} fbg;
;

int main(){
    p( new(  1).fizz().buzz()           );
    p( new(  3).fizz().buzz()           );
    p( new(  5).fizz().buzz()           );
    p( new( 15).fizz().buzz()           );
    p( new(  7).fizz().buzz().gizz()    );
    p( new( 21).fizz().buzz().gizz()    );
    p( new( 35).fizz().buzz().gizz()    );
    p( new(105).fizz().buzz().gizz()    );
    p( new(105).fizz().gizz().buzz()    );
    return 0;
}


Output:
1
2
3
4
5
6
7
8
9
1
Fizz
Buzz
FizzBuzz
Gizz
FizzGizz
BuzzGizz
FizzBuzzGizz
FizzGizzBuzz


Create a new paste based on this one


Comments: