Yak!の日記: YAPC Asia 2009 / Google Code Jam 2009 Round1
■YAPC Asia 2009
ノベルティの中に二次元絵の袋があるのはどうかと思われ。
開催が 20 分遅れたり紙のプログラムに LT の時間が誤印字されていたり(しかも時間中に訂正連絡なし)、運営的には多少ばたばたしていたもののまぁ許容範囲か。
セッション的には基本的にコーポレートトラック以外を聴講。
以下いくつかのトラックについて。
・Inline::x86 JIT Assembler
Dynaloader::dl_install_xsub() を使ってアセンブラ直埋め込み。なんという Binary Hacks。でも JIT Assembler と言うからには通常の呼び出しコードをその場で機械語に変換して欲しいかも。
・XS 書きのための Perl MAGIC 入門
XS はそもそも書かないし、書くくらいなら SWIG に逃げる人だが色々気をつける必要があるらしい。これも BinaryHacks 的(バイナリじゃないけど)。
・Event programming fun with AnyEvent and Coro
多分当日のタイトルは違ってる。宮川さんの POE に対する dis り方は異常。POE を知ったのもそう古い話ではなくてこれは便利と感動した口なのだが、AnyEvent も学ぶべきだろうか。
・Stardust, a Simple COMET Server
そもそも COMET という言葉を知らなかった。Web の世界は動きが速いなぁ。
・Solved in Perl6
Perl6 やばい。色々取り込みすぎ。メタ演算子とかジャンクションとかもすごいし、>>. によるリスト適用自動並列化とか。型システムもやばそう。マルチメソッドとか C++ の template を想起させる。
・MooseX Tourism
そもそも Moose まだほとんど使ってなかったり。OO なコードやモジュール自体ほとんど書かないせいだが。今後は Perl で OO といえば Moose になりそうだしやっておくべきではあるのだろうが。
・How regular expression work internally
正規表現エンジンの切り替えとかそんな話かと思ったが、バックトラックの規則を知らないとはまるよねという割と一般的な話。まず最左からマッチ開始するので最小マッチが直感と反する結果になる、というのはセッションの話にあったが、選択(|)の順序(左側優先マッチ)も場合によってははまると思う。
・The way to Rakudo *
Perl6 のセッションでも思ったけどちょっと試してみたくなった。
・Future.pm
チェック関数等を使って Perl バイナリの挙動を変更するという話。とりあえず凄いけどせめて共通のラッパを被せたりしないとやばいことになりそうな気が。
・Remedie: Building a desktop app using Perl, SQLite and jQuery
ほぼ自分専用だけど RoR でアプリ書こうかな、と思った事もあるんで発想としては分かる。フレームワークレベルにまでなればそういうことをしてみようという人も増えるかもしれないが、言語混在になるし選択肢が多すぎて収束はしないかもしれない。
・お手軽・お気軽・お気楽なサーバー&クライアント
POEIKC について。実家マシンとデータの受け渡しをするのに使っているスクリプトを POE に書き直そうとして停滞中だったりするのだが、これでさくっと作れるかも。
・all your base32 are belong to us
記号32種のみの文字による 4 言語(Perl, Ruby(1.8,1.9), JavaScript, DOS x86) polyglot。やべぇ。
ここ最近参加した会議では一番面白かったかも。言語縛りで共通テーマを持ちつつ実装内部から応用とか周辺まで色々な範囲を聞けたからかもしれない。
■GCJ 2009 Round1
結論から言うと Round1 落ち。
Round1b は 30pt の Rank 1979。
Problem B をやってるうちにどんどんコードがこんがらがり、デバッグで苦しむもののどうにか short input を submit。long input は桁数オーバーへの対応をしようとして間に合わず。問題文の 10^20 の段階で気付けという話。
Problem A は面倒になったので Perl で解決。木の表現を正規表現で書き換えて eval してデータ構造に落とすという荒技。
Round1c は 33pt の Rank 1157。
1b の結果に結構凹んでいたのだが、ものすごい快調な立ち上がり。
とりあえず Problem C も short input 専用と割り切って全探索版をまず書いてほぼ 1 時間で short input 完了。
で、long input は Problem C は submit せず(時間オーバーになるのが目に見えていたので)、Problem B は恐らく特殊ケースとか浮動小数の扱いで負け?、Problem A は誤 submit。long input に対して誤って short input の結果を submit していた模様。practice だと通るので OK だったはず。15pt あれば Round1 を通過していたはずなのに……。
結局の所、振れ幅を考えると Round1 当落線上というのが現在の自分の実力ということかもしれない。元々アルゴリズムに強い人間でもないのだがコーディング側も辛くなってきて自分の意図したことをコードに書き落とすのも一手間かかる。去年も書いたが来年もあるならば(かつ参加するならば) OCaml 使って解きたいかも。
YAPC Asia 2009 / Google Code Jam 2009 Round1 More ログイン