2010-05 << 2010-06 >> 2010-07

2010-06-18 (金)

*ICFP Programming Contest 2010 0日目

今日のGMT12:00(日本時間だと21時)から72時間のICFPのコンテストが始まります.

数年間やってみて感じたICFPのコンテストの特徴を書くと,

  • 問題が公開されたから,72時間でより良い物を作る
  • チームでやってもいい.今年は人数制限無し
  • 最初に見えている問題の説明が全てだと思わない方が良い
  • 速度自体は求められないが,遅いコードは試行錯誤するためには致命的
  • 英語

な感じです.

関数型言語の学会が,「最強の言語」を決めるために開催しているコンテストなので,優勝すると,その時使った言語が一部界隈で「最強の言語」として認められます.

ICFPは関数型言語の学会ですが,使用言語は何でも良いので,好きな言語で参加すれば良いとお見ます.ただ,若干Haskellとか有利な問題が出たりもしますし,スクリプト言語だと,結構頑張って書いても1回の試行に数時間かかってしまいそうできついかも.

検索すればすぐ出てきますが,過去のコンテストの内容を以下に.

2009

去年は有休取れなかったので2日だけの参加でした.

人工衛星を制御して,なるべく少ない燃料,時間で指定された軌道に乗せたり,軌道上を回っている物体にランデブーするためのエンジンの噴射パターンを求める問題.

まず,与えられた人工衛星のプログラムを動かすためのVMを作るところからスタート.ある時間の色々な座標が分かるので,そこから軌道を予測したり,試行錯誤.最初は物理の問題で,その後は誤差と戦い.最終的には時間との戦い.

途中で,月の重力の影響も受けることが分かった….

2008

火星上の車(ローバー)を制御して障害物と火星人(!?)を避けて目的地にいかに早く到達するか.

近くしか見れないので,地図を作りながら安全で最短な経路を予想する.socket経由でサーバに接続してローバーを制御.なのでレイテンシがある.

迷路みたいな入り組んだ地形にも対応できるように作ったけど,結果発表で公開されたマップ見たらそんな地形は無かった.

2007

DNAを維持ってEndoさんを救う.

EndoさんのDNAである文字列をプログラムに見立てて処理するとRNAが作れる.RNAは画像を生成する描画データになっているので,処理すると瀕死のEndoさん.DNAになるべく少ない修正をして,Endoさんが生存できるようにする.

C++で普通に書くとRNA生成に数時間かかるので,適したデータ構造を考える問題.線形時間未満で実行できる文字列のsubstrとappendが必要.Haskellずるい.

2007

umix.

VMを作って実行するとunixもどきが立ち上がる.ギリシャ数字を使ったBASICとか,見たこと無い言語のソースとかが入っているので実行してヒントを得て,アカウントをクラックしたりする.真面目にクリアしたくない,難解なアドベンチャーゲームとかも入っている.

2010-05 << 2010-06 >> 2010-07