@toku51n様のfoobarをフォークしていろいろ遊んでみた時の記録。
もう一つ、結果を文字列に埋め込んだ奴があるけどリンクコピーミスで分からん。 ideoneでフォーク結果一覧ってどうやったら見れるの?と言うか見れなくね?
#include <stdio.h> | |
#include <stdlib.h> | |
void cont(){}; | |
void end(){ | |
exit(0); | |
} | |
int main(void) { | |
void (*f[])() = { cont, end }; | |
int i = 1; | |
char r[4][9] = {"","Fizz\n","Buzz\n","FizzBuzz\n"}; | |
loop_start: | |
sprintf(r[0],"%d\n",i); | |
printf(r[(3-i%3)/3+(5-i%5)/5*2]); | |
f[i/100](); | |
i++; | |
goto loop_start; | |
} | |
//https://ideone.com/T56UtK | |
//別にスマートにはなっていないが、まぁ常識的にはこうする。 | |
//Cプログラミングとかいつ振りかわからんが、これくらいなら難しくもないな。 |
#include <stdio.h> | |
#include <stdlib.h> | |
void cont(){}; | |
void end(){ | |
exit(0); | |
} | |
int main(void) { | |
void (*f[])() = { cont, end }; | |
int i = 1; | |
char r[14] = "\0\0\0\0FizzBuzz\0"; | |
loop_start: | |
sprintf(r,"%d",i); | |
r[8]=(5-i%5)/5*'B'; | |
printf(r+4*(((3-i%3)/3+(5-i%5)/5*2)-2*((3-i%3)/3)*((5-i%5)/5))); | |
printf("\n"); | |
f[i/100](); | |
i++; | |
goto loop_start; | |
} | |
//https://ideone.com/TT4OFx | |
//\0は0だと仮定。 |
#include <stdio.h> | |
#include <stdlib.h> | |
void cont(){}; | |
void end(){ | |
exit(0); | |
} | |
int main(void) { | |
void (*f[])() = { cont, end }; | |
int i = 1,j; | |
char r[14] = "\0\0\0\0FizzBuzz\0"; | |
loop_start: | |
sprintf(r,"%d",i); | |
j=i*i*i*i; | |
r[8]=(1-j%5)*'B'; | |
printf(r+4*(((1-j%3)+(1-j%5)*2)-2*(1-j%3)*(1-j%5))); | |
printf("\n"); | |
f[i/100](); | |
i++; | |
goto loop_start; | |
} | |
//https://ideone.com/erlH2s | |
//結局四回かけるのは正解。 |
#include <stdio.h> | |
#include <stdlib.h> | |
void cont(){}; | |
void end(){ | |
exit(0); | |
} | |
int main(void) { | |
void (*f[])() = { cont, end }; | |
int i = 1,j; | |
char r[14] = "\0\0\0\0FizzBuzz\0"; | |
loop_start: | |
sprintf(r,"%d",i); | |
j=(3-i%3)/3+(5-i%5)/5*2; | |
r[8]=(5-i%5)/5*'B'; | |
printf(r+j*j*j*j%14%5*4); | |
printf("\n"); | |
f[i/100](); | |
i++; | |
goto loop_start; | |
} | |
//https://ideone.com/D9vfjr | |
//これで4かけてるのは単に{0,1,2,3}から{0,1,2,1}を作るだけの為。 |
#include <stdio.h> | |
#include <stdlib.h> | |
void cont(){}; | |
void end(){ | |
exit(0); | |
} | |
int main(void) { | |
void (*f[])() = { cont, end }; | |
int i = 1,j; | |
char r[14] = "FizzBuzz"; | |
loop_start: | |
sprintf(r+9,"%d",i); | |
r[4]=(i+4)%5/4*'B'; | |
printf(r+(1-(i+2)%3/2)*(9-(i+4)%5/4*5)); | |
printf("\n"); | |
f[i/100](); | |
i++; | |
goto loop_start; | |
} | |
//https://ideone.com/Zgt7Nb | |
//若干改良。 |
rk(1) download copy | |
#include <stdio.h> | |
#include <stdlib.h> | |
void cont(){}; | |
void end(){ | |
exit(0); | |
} | |
int main(void) { | |
void (*f[])() = { cont, end }; | |
int i = 0; | |
char r[16] = "FizzBuzz"; | |
loop_start: | |
sprintf(r+9,"%d",i+1); | |
r[4]=i%5/4*'B'; | |
printf(r+(1-i%3/2)*(9-i%5/4*5)); | |
printf("\n"); | |
f[i/99](); | |
i++; | |
goto loop_start; | |
} | |
//https://ideone.com/OXSjlE | |
//微修正 |