ラベル fizzbuzz の投稿を表示しています。 すべての投稿を表示
ラベル fizzbuzz の投稿を表示しています。 すべての投稿を表示

2009/07/03

fizzbuzz

#define X write(1,&F,1);write(1,&i,1);write(1,&z,1);write(1,&z,1);
#define Y write(1,&B,1);write(1,&u,1);write(1,&z,1);write(1,&z,1);
//Xはprintf("Fizz");、Yはprintf("Buzz");とほぼ同じ

char *strrev(char *s){//文字列を反転させる
char *ret = s;
char *t = s;
char c;
while( *t != '\ 0' )
t++;
t--;
while(t > s) {
c = *s;
*s = *t;
*t = c;
s++;
t--;
}
return ret;
}

void itoa(int value, char *buff){//itoa
char *p;
int mod;
if( 0 > value ) {
*buff++ = '-';
value = -value;
}
p = buff;
do{
mod = value % 10 + 48;
*p++ = (char)mod;
value /= 10;
}while(value);
*p = '\ 0';
strrev(buff);
}

int main(void){
int j;
int k;
char F='F';
char B='B';
char i='i';
char u='u';
char z='z';
char N=0x0A;//改行コード
char buf[16];
//こっからなぜか崩れる(´・ω・`)ショボーン
for(j=1;j<=100;j++){//1から100まで if(j%15==0){ X Y }else if(j%5==0){ Y }else if(j%3==0){ X }else{ itoa(j,buf); for(k=0;buf[k] != '\ 0';k++){ write(1,&buf[k],1); } } write(1,&N,1); } return 0; }
2009/6/30のエントリで

ソースコードが一文字のHello,world!を作りましたが

今回はfizzbuzzに挑戦して見ました

ソースコードfizzbuzz.cの内容は

前回と同じく

A

のみ

肝心のコンパイラオプションは

gcc -DI="char *strrev(char *s){char *ret = s;char *t = s;char c;while( *t != '\ 0' )t++;t--;while(t > s) {c = *s;*s = *t;*t = c;s++;t--;}return ret;}void itoa(int value, char *buff){char *p;int mod;if( 0 > value ) {*buff++ = '-';value = -value;}p = buff;do{mod = value % 10 + 48;*p++ = (char)mod;value /= 10;}while(value);*p = '\ 0'; strrev(buff); }" -DX="write(1,&F,1);write(1,&i,1);write(1,&z,1);write(1,&z,1);" -DY="write(1,&B,1);write(1,&u,1);write(1,&z,1);write(1,&z,1);" -DA="I int main(void){int j;int k;char F='F';char B='B';char i='i';char u='u';char z='z';char N=0x0A;char buf[16];for(j=1;j<=100;j++){if(j%15==0){X Y}else if(j%5==0){Y}else if(j%3==0){X}else{itoa(j,buf);for(k=0;buf[k] != '\ 0';k++){write(1,&buf[k],1);}}write(1,&N,1);}return 0;} " fizzbuzz.c

です

マクロIの部分は

http://oshiete1.goo.ne.jp/qa3355671.htmlの10番の回答を

勝手に使わさせてもらいました

前回!が使えない的な事を言いましたが

なんか全部使えないわけじゃなさそうです

文字の次に!があるのがだめなのか?

スペースをいれればいけるのか?

書き下したコードをのせようと思いましたが

のせるとなぜか全体のプロポーションが崩れるので

別にします

このエントリに

http://tyosasurainootaku.blogspot.com/2009/07/fizzbuzzc.html

↑でも大分崩れてますけど

関係無いけど

こんなふうにソースコードが一文字で

コンパイラオプションでするプログラミングの事を

一文字(ひともじ)プログラミングとでも名付けようか