2007年05月11日 anarchy gold
_ FizzBuzz
素直に書くとこんな感じ。
#include <stdio.h> #include <string.h> int main(void) { char str[16]; int i; for (i = 1; i <= 100; i++) { str[0] = '\0'; if (!(i % 3)) { strcat(str, "Fizz"); } if (!(i % 5)) { strcat(str, "Buzz"); } if (!str[0]) { sprintf(str, "%d", i); } printf("%s\n", str); } return 0; }
これ(↑)をこんな感じ(↓)にしてみました。
int main(){int i=0;while(i++<100){char f[]="Fizz",b[]="Buzz";i%3?*f=0:0;i%5?*b=0:0;*f|*b?printf("%s%s\n",f,b):printf("%d\n",i);}}
うーん。今の私には、これ以上はどんなに頭を絞っても出てきませんでした。
サイズは131バイト。これならtwitterでも送れるから良しとしよう。
今日の時点でC言語部門42位かぁ。
2008年05月11日
_ たのしいCocoaプログラミング
読みました。
せっかくMacを買ったのでCocoaをさわってみようと思って写経してみました。
Interface Builderのバージョンが上がって若干操作が変わっていたのですが、ちゃんと動きました。
対象読者はプログラミングの初心者のようで、丁寧に解説されています。初心者向けに説明しようとしたときに避けて通れないオブジェクト指向やMVCの説明についても必要十分という感じでよかったです。人にものを説明するときの勉強になりました。
Objective-Cは初めてでしたが、基本はC言語なので馴染みがあります。オブジェクトとメッセージをスペースで区切ったり、コロンの後ろに引数を指定するのとかはSmalltalkと一緒ですね。ああ、この本には明記されていませんけど、nilがオブジェクトだったりするところも。CとSmalltalkとの混じり具合が面白いです。
id型と void* の違いというか使い分けがまだいまいち理解できてません。
_ dot [ちゃんと理解しているわけではないので、間違っているかもしれませんが、id型はObjective-Cで動的型付けをする..]