ICPC

ACM/ICPC国内予選。
今年は解き方がぐだぐだすぎた。
A->Bと順調に解いたけどCがなぜかうまくいかなくて諦めてDに移行するのが遅かったのが敗因。
Dを速攻で終わらせて、Eをとっても遅いコードで書いて大会終了2分前(だいたいテストケースあたり20分)にようやく通したという駄目っぷり。
Cを解けなかったのが心残り。

各問題感想

A

普通に書くだけ

B

再帰で書くだけ

C

とりあえず糞遅くてもいいから間違いのないコードを書こうとしたけど
それすら正しく動作しなくてあきらめた。たぶん問題文から見落としがあったんだろうなぁ。

D

恒例のダイクストラだけで終わる問題。
何も考えず速度+場所をノードにダイクストラでおわた。

E

Eで最大マッチングが出るのはさすがに予想してなかった。
あとでやろうと放置してたからよくわからんままライブラリコピペで終わったのが悲しい。
自分で通したアルゴリズムの動作原理も意味もよくわかっていないという悲しさ
たぶん前にどこかのチームのライブラリを適当に写してただけだから
使い方すらよくわからんかったけど勘で動かした。
紙から打つときに1個間違いがあって最初それに気づかずに30分くらいロスした。
ちゃんと打ててるか確認することは大事だね。

F

ごめん問題文。最初から最後まで読んでなかった

適当にコンテンツを作る

あとは適当なコンテンツを置いていくだけです。
ただ、コンテンツとか置くネタなにもないなーと気づいたので考え中です。
とりあえず、過去にハテナで書いたコードを再利用してお茶を濁してみました。
RubyコードをRubyで等価に実行可能な記号だけに変換する プログラム の記事
の変換プログラムをJavaScriptで書いてWebっぽい気分にだけ浸ってみた。
http://www.kurimura.com/rsencode/demo.html
javascript初めて書いたけどよくわからん。まぁOperaで動いたからいいやという超投げやり。

さらにスキルチャージ!

前回リモートデスクトップを有効にしたので次はIISです。
とりあえずWebサーバーとして使えるようにするためにIISを有効にします。
これは役割から追加でWebサーバーを選ぶだけで簡単にできます。
面倒なのは大嫌いなので楽なのは素晴らしいです。

次は家の自宅鯖との共存です。
家に既にサーバーが置いてあって個人用に色々既に活用しているので、
家鯖と今回のサーバーの共存が必須です。
まず、大学においてあるサーバに家からアクセス出来るようにする必要があります。


ここで大きな問題があってうちの大学のネットワークは外には直接繋がってないんです。
プロキシサーバを経由してネットに繋げることしかできません。
このままだと大学にサーバーを置いても公開できません。
そこで(以下、下手すると怒られそうなので略
それっぽいなんやかんやがあって、大学から家にsshを通す隙間を作れました。

これで大学のネットワーク越しに家にアクセス出来る環境が整いました。
とりあえず、httpを共存するために家のapacheのVirtualDomainに追加しました。

Microsoftのスキルチャージ

少し古い話ですがhttp://www.microsoft.com/japan/powerpro/skillcharge/archive.mspxのWebサーバー導入キットに応募していました。
それで応募していたWindowsサーバ一式が届きました。
正確にはだいぶ前に届いてた気もしますが、時間が取れなくて放置していました。
で、そろそろ時間取れそうなのでサーバーを構築する気力がわいてきました。
そんなわけなので適当に構築までの流れを書くですよ。

なんでこれに申しこんだかって理由を書くと、id:tmytさんが知り合いが申し込んでたので申し込んだと聞いたので申し込みました。
よくわからん連鎖です。そういうわけで、さくっと申し込んだらさくっと届きました。
届いた箱はこんな感じ

箱を開けてそこの中に入ってた今回届いたサーバーがこれ。

ええと、NEC Express5800/110Geですね
Webページには申し込みだと届くのはML110G5と書いてある。
けど、予告なく変わる場合があるぜって書いてたので予告なく変わっていたようです。
最初、違う機種が届いたのでかなり驚いたのは秘密。

で、家だと場所がないので大学においちゃえ大作戦を実施します。
他にも今回のに応募していた知り合いが何人かいたので悲惨な状態になっております。

とりあえず、こいつにWindows Web Serverをインストールします。
インストール自体は適当にクリックしていくだけでできます。
最近のOSは楽に入れれてほんといいなぁ。
で、サーバーの各種設定をこれからするわけですが、その前にVGAの画質が最悪です。
この110GeのオンボードVGAの性能は非常に残念なようです。
そこで、ローカルの別のマシンから操作するようにしましょう。

linuxとかだとsshだけ入れれば幸せなのですが、ここはWindowsなのでリモートデスクトップを有効にしましょう。
有効にする作業はWindows XPやらVistaと同じなので眠りながらやってたらできました。
これで最低限使えることができる環境ができました。

次くらいに残りの作業をする

無能の確認完了

論文読んでみた。うーんコード見ると簡潔すぎて自分の頭の悪さがよくわかるなぁ。
関数型言語は他人の頭の良さに絶望する言語だから楽しいなっと。
(C++は他人の変態っぷりにゲラゲラ笑う言語)

自分の無能さの確認をしてみる。

http://www.kmonos.net/wlog/95.html#_2107090326
論文読まずに適当にコード書いてみて後で論文を読んで自分のセンスの無さに絶望する遊びをしてみる。

z = Prelude.map
s x = \f a b -> x (uncurry f) (zip a b)

myZipWith = id

map     = myZipWith zero
zipWith = myZipWith one
zero = z
one  = s z
main = do
        print $ Main.map id [1..10]
        print $ Main.zipWith (,) [1..10] [2..11]