2008-01-01から1年間の記事一覧

Universal Lambda インタプリタを作ってみた

以前作った Lazy K インタプリタを改造して、Universal Lambda のインタプリタを作ってみました。 clamb.c (github) Universal Lambda のコードを一旦 SKI コンビネータ式に変換して、あとは Lazy K と同じように実行します。公式のインタプリタ: lamb sort+…

Marathon Match 46 KnightsMoveCipher

http://www.topcoder.com/longcontest/?module=ViewStandings&rd=13679久しぶりに参加。Coding phase が終わったところで暫定3位で、とりあえず賞金はもらえそう。図のように正方形の盤面に文字が並べられていて、盤上をチェスのナイトの駒のように移動しな…

ブロックスデュオ

今年も参加してました。結果は13勝1敗で優勝。http://hp.vector.co.jp/authors/VA003988/gpcc/08g2b.htm提出したプログラムはこちら。 hmmmm.zip 思考ルーチンは 去年 とほぼ同じもので、前向き枝刈りに Multi-ProbCut (リンク先pdf注意) を使うようにしたの…

Google Code Jam 2008 APAC Local Onsite

GCJ

36名通過のところ暫定41位。意外と健闘してた。 A-small 今回の鬼門。直しても直しても通らない! 1時間くらい粘ったけど埒があかないので後回し。 D-small さすがに0点ではかっこ悪いので解けそうな問題を探してみる。 問題 D は small だけなら力押しで楽…

Lazy K インタプリタ修正

この前作ったインタプリタ にバグを見つけてしまいました。特定の位置で GC が走ると、出力リストの cdr を辿る処理が動かなくて、ごく希に同じ文字を2度続けて出力してしまってました。修正したソースコードはこちら。 lazyk.c (github) ゴルフ場のインタ…

Google Code Jam 2008 Round 3

GCJ

25点で327位。 A-small, A-large Ruby らしく、地図の塗りつぶしに正規表現を使ってみたり。 40分くらいで最初のコードは書けたけど、バグ祭りで全然通らない。 泣きそうになりながらデバッグして、なんとか small と large 両方通した時点で残り30分を切っ…

Marathon Match 33

http://www.topcoder.com/longcontest/stats/?module=ViewOverview&rd=121994位でした。問題はエレベータのスケジューリング。基本は適当に動き回っていて、人が居たら乗せるというナメたアルゴリズムでした。ビジュアライザでトップの人のを見ると整然と動…

Marathon Match 34

http://www.topcoder.com/longcontest/stats/?module=ViewOverview&rd=122001位ゲット。名前赤くなっちゃいました。 GWだったせいか、上位に日本人が多数。http://d.hatena.ne.jp/wata_orz/20080507/1210178014 http://d.hatena.ne.jp/EmK/20080507/1210177…

Marathon Match 32

http://www.topcoder.com/longcontest/?module=ViewStandings&rd=12198 これに参加してました。 暫定で 3 位だったのが System test で一人抜いて 2 位。1 位の人にはあと一歩で追いつけませんでした。問題は工場の経営者になって、5000日の期間内にどれだけ…

Lazy K インタプリタを作ってみた

あなごるの sort characters を挿入ソートで書いたらタイムアウトになって悲しかったので、速度重視で作ってみました。 lazyk.c (github) 公式のインタプリタ: lazy sort+characters.lazy 作ったやつ: ./lazyk sort+characters.lazy 公式のはノードのメモリ…

Haskell → Lazy K トランスレータ

Haskell Hackathon が楽しそうだったので、昔作りかけて放置してあった Haskell コンパイラを引っ張り出してきました。せっかくなので、最もタメになる初心者用プログラミング言語であるところの Lazy K へのトランスレータにしてみました。 hs2lazy.tgz (…

Drop+first+line

言及されてたので解説。 ソースはこんな感じ。 (load "./lazier.scm") (load "./prelude.scm") (lazy-def '(main input) '(input (lambda (hd tl) (((hd (lambda (x) (x (k i))) (k i)) cdr) tl)))) (print-as-unlambda (laze 'main)) やりたいことは、 先頭…