近況

最近起こったことをつらつらと。

期末試験

2教科しかなかった上に片方はアルゴリズム特論だったので、あって無いようなものでした。
アルゴリズム特論は「KruskalでMSTを求めてね」程度の雑魚問題がほとんど。
唯一自信が無いのが「手計算でこのケースの連鎖行列積を求めてね」という問題で、頑張って紙の上でメモ再帰しましたが、どこかで計算ミスしてるんじゃないかと思います。3人ぐらいで答え合わせしたら、みんなバラバラでした。
テスト後、知人に「Warshall-Floydって O(n^2) でできるよね?」と訊かれました。無茶言うなー!

院試

滑り止めであるところのうちの院はつつがなく受かりました。
来月に本命が控えてるのですが、全然受かる気がしない。とりあえず当たって砕けてきます。

自販機

昨日アパート内に自販機が設置されました。
私のジュースの摂取量たるや「そろそろ糖尿病になるんじゃない?」と知人にしばしば言われるほどなので、これは死亡フラグが立ったのかもわかりません。
そういえば、アパートを出て5メートルほど進んだところにもまた自販機があるのですが、見なかったことにします。

天下一プログラマー

アンケートのお願いと称するメールだけがやってきました。どうやら予選落ちだったようです。通った方々の中には一度お会いしたかった方が何人かいらっしゃるので、とても残念です。これも私の不甲斐なさゆえですが。
どうやらyukは無事通過したようです。通過されたみなさん、決勝でのご活躍をお祈りしております。

Aizu Online Judge

コーチが新機能を付けてみたそうです*1。そろそろ練習を再開したいと思っていたこともあって、何問か解きがてら使ってみました。
これは楽しい。詳しくは言いませんが、実に快適です。

手始めに、Factorial IIを解き直してみました。以前ゴルフに挑戦して、82byteぐらいまで縮めて満足しました。が、最近になってleafmoonさんに抜かれたのでこの度再挑戦することに。
結局80byteになりましたが、昔と比べてどこがどう改善されたのやらさっぱり分かりません。あの時のコードはどこにあったかしら。

ところで、今日嵌ったバグがこちら。

struct state{
  int cost, // ...
  int operator>(const state &s) const { cost > s.cost; }
};

Ruby脳!*2 *3 *4
これはDijkstraでpriority queueに突っ込む状態の構造体なのですが、間の悪いことに私のDijkstraはpriority queueが滅茶苦茶な順番で値を取り出してきてもちゃんと動くようになってました。もちろんその分はオーダに跳ね返ってきますが。
さらに間の悪いことに、ただいまAizu Online Judgeには「Time Limitが10秒以上の問題に対してTLEすると、TLEではなくRuntime Errorが返ってくる」という不具合がありまして、見当違いのバグをずっと探し続けてました。
この不具合はもうすぐ直る予定ですが、皆様ご注意ください。

ところで Aizu Online Judge の呼称ですが、会津大の人たちはサーバ名をとって単に rose と呼んでます。アルファベット3文字で書くときは UOA とか AOJ とか。統一された呼称は、実はあんまり無かったりします。

*1:ベータ版なので今のところ未公開

*2:Rubyではその関数やブロック内で最後に評価された値が自動的に返り値になる

*3:土日はずっとRuby書いてたんです

*4:そもそも何故コンパイラは叱ってくれないのだろう