Skip to content

Instantly share code, notes, and snippets.

@kurema
Last active February 29, 2020 19:14
Show Gist options
  • Save kurema/8120c04e25c5afd987d933df2450d914 to your computer and use it in GitHub Desktop.
Save kurema/8120c04e25c5afd987d933df2450d914 to your computer and use it in GitHub Desktop.
Fizz! Buzz! 遊び

@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
//微修正
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment