お勉強
ラムダ計算を学ぼうとしたら
___ / \ /ノ \ u. \ !? / (●) (●) \ | (__人__) u. | \ u.` ⌒´ / ノ \ /´ ヽ | l \ ヽ -一''''''"~~``'ー--、 -一'''''''ー-、. ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒)) ____ / \!?? / u ノ \ / u (●) \ | (__人__)| \ u .` ⌒/ ノ \ /´ ヽ | l \ ヽ -一''''''"~~``'ー--、 -一'''''''ー-、. ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
ってな感じになった。
基礎知識がすっ飛んでる。
FizzBuzz問題
寝る前にこんな物を見つけた。
「はてなブックマーク - どうしてプログラマに・・・プログラムが書けないのか」
とりあえずCで普通に書いたら
for(int i=1;i<101;i++){ if(i%3==0) printf("Fizz"); if(i%5==0) printf("Buzz"); if(i%3&&i%5) printf("%d",i); puts(""); }
で、変態的に書いたら
int c=0x30490610,d=c,e; for(int i=1;i<101;i++){ e=d&3; if(e&1) printf("Fizz"); if(e&2) printf("Buzz"); if(!e) printf("%d",i); if(e==3) d=c; else d>>=2; puts(""); }
まぁ長くて意味無いけど。
「anarchy golf - FizzBuzz」の所で最短コードランクが載っているんだがCで73byteってどうやるんだろう?
int main(){for(int i=1;i<101;i++){if(i%3==0)printf("Fizz");if(i%5==0)printf("Buzz");if(i%3&&i%5)printf("%d",i);puts("");}}
で122byteだしなぁ。
追記:
for(int i=1;i<101;i++){ printf(i%3?"%s":"Fizz%s",i%5?"":"Buzz"); if(i%3&&i%5) printf("%d",i); puts(""); }
って出来るか。そうすると、
int main(){for(int i=1;i<101;i++){printf(i%3?"%s":"Fizz%s",i%5?"":"Buzz");if(i%3&&i%5)printf("%d",i);puts("");}}
で112byte。まだまだ遠い。
「FizzBuzz問題 続き」に続く」