月別アーカイブ: 2008年12月

サーバメンテ終了。

というわけで、終了。

気付かなかった人もいるだろうけど、12時間ほどサーバメンテしてた。
このBlog以外は見た目は今までどおりだったしね。ただ、別パソコンがサーバになってただけ。

12時間もぶっ続けでパソコンいじってたら頭痛いっての!

全自動バックアップ。

f-kserver

全自動バックアップ。
4時30分、鯖からのWOLを受け取り起動。スタートアップにて自動実行。
サーバのデータバックアップと、学校の自分のアカウントのデータをバックアップ。
前者は毎日起動、1週間分のバックアップを保管。後者は3日に1回起動とした。

タスクはバッチファイルにまとめ、特定のフォルダ内にある*.batファイルをすべて実行するようにしてある。すべて終わればシャットダウン。
同期するファイルがほとんどないときなら、15分もあればシャットダウンされているはず。

Golf。

プログラミングの世界で、できる限り短くプログラムを書くことをGolfと言うらしい。
実際のGolfで少ない手数を目指すのと同様に、プログラムではコードを短くする。

そして、その短さを競うサイトが存在した。
ま、「サイト見つける→Golfって言うんだ」の順番が正しいのだけども。

anarchy golfというサイト。
今、C言語をかじっているので、自分でも解けそうな問題をやってみることに。

ASCII from 0x01 to 0x7f という問題に目をつけ、さっそくやってみた。
問題は、文字コードが0x01から0x7Fまでの文字をすべて表示するというもの。
きちんと表示できない文字も多数含まれているが、無理やり動かす。

今までの知識では、どうあがいてもソースが長くなってしまう。
なので、他の問題の他人のソースを参考にする。
deadline(期限)が指定されている問題では、deadlineを過ぎると、ソースが公開される。
それらのソースを見てみると、main関数すら大きく異なる。

int main(void){

}

と書いていたものは、

main(){}

まで短くできるようだ。ま、場合によるけども。

そこで書いてみたのが、以下のコード。

main(i){for(;i<128;)putchar(i++);}
main(i){for(;i<128;putchar(i++));}
main(i){while(i<128)putchar(i++);}

どれでもよし。これで34バイト。
でも、こうしても1位の33バイトには届かない。

いったい、どうやっているんだろう。

 

記事書きながらいろいろいじってみてたらできた。
putcharの戻り値は文字コードになるみたい。

main(i){while(putchar(i++)<127);}
main(i){for(;putchar(i++)<127;);}

どちらでもよし。これで33バイト。
けど、whileのほうがきれいかな?