タグ

ブックマーク / shinh.hatenablog.com (14)

  • ICFPC 2014 - 兼雑記 (2014-07-28)

    総じておだやかに楽しかった。 https://github.com/shinh/icfpc2014 1日目 初日、21時から問題を読む。んー普通だなーと思いつつとりあえず寝る。 起きて Lambda-man の AI を書きはじめる。普通だと思ったけど、 Lisp マシンってこういうふうな感じなんだなぁ、と、知らなかったので普通に勉強になった。とりあえず思った通りに動くものを作ろうということで、アセンブラを Ruby 上の DSL として書く。オペランドの数と型のチェックと、ラベルの解決をするくらいのやつ。 なんとなく何ができるかわかったところで、これはアセンブラ直書きは大変だし変更に弱い…ってことで、そのアセンブラの上に高級言語を作る必要を感じる。素直に Lisp でもいいけど、あまり Lisp 書き慣れてないので、 Ruby 上の DSL をもう1レイヤ重ねることにした。あとは bef

    ICFPC 2014 - 兼雑記 (2014-07-28)
  • ICFPC 2011 - 兼雑記

    http://www.icfpcontest.org 問題は例年通り面白い…とかいう次元じゃなくて無茶苦茶よくできてるなーと思った。感動的に。 L:tG とかいう対戦型カードゲームAI を書く。 M:tG に名前似てるけど、デッキとか作る感じではなくて、15枚のカードをいつでも使える感じ。カードは256個のスロットに置いていって使う。256個のスロットはそれぞれ HP を持っていて、 HP がゼロになると死ぬ。相手のスロットを全部壊せば勝ち。15枚のカードはそれぞれすごい細かい機能しか持ってない…っていうか関数型ミニ言語のオペレーション一個分しかないので、かなりの枚数を組み合わせて強い効果のある魔法を作っていく感じ。 このへんのバランスが絶妙で、相手を全滅させるような強力な魔法を作ろうとすると、それを作ってる間に殺されたり邪魔されたりするかもだし、かと言ってメラを連打してても相手は死な

    ICFPC 2011 - 兼雑記
  • πのケタ数世界記録の話 - 2010-12-28 - 兼雑記

    TCC の作者であるところの Fabrice Bellard という人は何やらものすごくて、 TCC のスライドにも書いたように、 qemu とか ffmpeg の作者であると同時に、πの任意桁を比較的高速に求めるアルゴリズムを開発したり、πをたくさんの桁数計算して、8ヶ月ほど世界一の記録を持っていた人だったりもします。 でまぁそのへんの話。 http://en.wikipedia.org/wiki/Chronology_of_computation_of_%CF%80 あたりを見るとわかる通り、世界記録は2002年からずっと、1.2兆桁くらいってのが更新されてなかったのですが、2009年に 2.6兆、2.7兆、と来て、2010年に5兆と来ているみたいです。 2009年の最初の2.6兆というのは T2K Open Supercomputer とかいう 640 ノードとかあるスパコンによる記

    πのケタ数世界記録の話 - 2010-12-28 - 兼雑記
    okagawa
    okagawa 2010/12/29
    πのケタ数世界記録の話
  • StringPiece というライブラリの話 - 兼雑記

    例えばこう、ディレクトリの名前とその中のファイル名を / でくぎって結合する関数を書くとします。引数が std::string でも使いたいし const char* でも使いたい、ということで、たいていは void JoinFilePathStr(const string& dir, const string& base, string* out) { out->clear(); out->append(dir); out->push_back('/'); out->append(base); }なんてのを書くんじゃないかと思います。この関数で問題になるのは const char* を渡すと不要な string object が一度できることで、敬虔な C++ 屋さんだと、 void JoinFilePathStr(const string& dir, const char* base,

    StringPiece というライブラリの話 - 兼雑記
    okagawa
    okagawa 2010/08/24
    引数として const char* を渡した場合に allocation のコストがかからないので、ほとんど overhead がない
  • ICFP のコンテスト 2010 - 兼雑記

    頑張りはしたんですが、正直もっとやれたんじゃないかとくやしい。最後まで有効なソルバ書けなかったって感じですし… コードはこのへん。こいうのって tgz とかよりディレクトリ置いとく方が面白いかなーと思ってそうした。 tern.rb あたりがひどい感じ。結果は 2002 台解いて 17 位。結果は悪くないんだよなぁ。 http://shinh.skr.jp/dat_dir/icfpc-2010/ 問題の内容は…略。作業の記憶をリプレイだけ。 まず最後にヒントとして key prefix というのを作る回路を作れと書いてあるので、それを頑張る。頑張ります。ゲートの推測とかどうやったか忘れた。1ゲートだけの回路を置いてみてどうなるかーとかで回路の特性を理解したんだと思う。ただこの段階では明確な規則は深く考えなかったし、自分の作った真理値表が正しいか自信なくてドキドキだった。 で、回路の特性がわか

    ICFP のコンテスト 2010 - 兼雑記
  • ゴルフ場のなかみ - 兼雑記 (2009-09-29)

    最近ゴルフ場を新しいマシンに引越そうとしていて、ついでなのでシステムをもうちょっと丁寧にパッケージ化しようとしてます。そのついでとして、現在のゴルフ場について内部がどうなってるか、ということを少しまとめてみようと思いました。 結構似たようなことをするサービスもあるんですが(codepadとかllevalとか)、そのへんのコードとかは全く参考にしてないので、そういうのを見た方がいいかもしれませんし、あとゴルフ場固有の事情も色々あったりするかもしれません。まぁでも日語でそのへん書いてるのはあんまり見たことがないので、多少参考になる部分もあるかもしれません。 今作業中のコードは github に入れていっています。 apt で入らないパッケージの処理以外はだいたい入ってるはずですが、まだ足りないものとかあるかもしれません。 http://github.com/shinh/ags システム自体は

    ゴルフ場のなかみ - 兼雑記 (2009-09-29)
    okagawa
    okagawa 2009/09/29
  • MacOSX 上での開発について勉強したことについてちょっと書いてみる - 兼雑記

    対象読者は不明。 まず全体の印象だけど、ソース無いようわあん! というのがデカいです。 Web にある情報はすごくたくさんの情報がまとまってるところと、それほど多くない ML と、っていうイメージ。あと開発者はあんまりソフト以外の開発情報(日記書くとかそういう)とか出してないなぁというイメージ。とかで調べるとわかるのかもしれないけど、なんも買ってないから不明。

    MacOSX 上での開発について勉強したことについてちょっと書いてみる - 兼雑記
    okagawa
    okagawa 2009/04/16
    SDL on Mac
  • binspect - 兼雑記

    http://shinh.skr.jp/dat_dir/binspect.tgz ずっと放置するよりは…と思って出すことに。JVM Golf をやった時に作った、汎用バイナリフォーマット解析コマンド&ライブラリ、を作りたかったものです。 binareal 見て 1 年後にちょっと作ってみたものを 2 年してから出すというようなそういう。 % ./binspect.rb hello.gif hello.pなどとすると Ruby の pp で GIF をダンプしたものが出力されます。 [[:fileHdr, [[[:signature, "GIF"], [:version, "89a"]]]], [:logicalScreenDescriptor, [[[:width, 35], [:height, 100], [:packed, 128], [:bgcolor, 1], [:aspect_r

    binspect - 兼雑記
    okagawa
    okagawa 2008/10/12
    rubyによるバイナリパーサライブラリ
  • 2008-07-26 - 兼雑記 - SGC

    色々あって GC に興味がちょっと出たので色々見てました。とりあえずまとまった日語資料としては以下の PDF が一番良いように思いました。 kinaba さんがちょっと前に言及しておられたえんどう豆的でない方の遠藤さんが書いた文章らしい。 http://matsu-www.is.titech.ac.jp/~endo/gc/gc.pdf これをざーと読んでいくと、すごくためになって、色々わかるのですが、最後の方の 7.2 に、 筆者は、 parallel かつ concurrent な GC を、 Boehm GC を基にして実装している。 とか書いてあって、そのちょっと前に concurrent GC ってのは要は別スレッドでちょいちょい GC 動かす実装で、 incremental GC の一種と考えられて、要 write barrier 。とか書いてあるわけです。でこれってちょっと考

    2008-07-26 - 兼雑記 - SGC
    okagawa
    okagawa 2008/07/26
  • 正規表現の文字クラス - 兼雑記

    Perl は正規表現とか " ではさまれた文字列の中にある変数とか配列を展開してくれるんですが、これは明らかに正規表現の文字クラス ([abc] とか書くヤツ) とブツかるわけです。 以下のコードは @a に 0-999 まで "x" っていう変数をつっこんでから s/$a[...]/y/; 的なことを実行して、 $_ に入ってる x を y に変えようとするコードをいくつか。 #!/usr/bin/env perl for ($i=0; $i < 999; $i++) { $a[$i] = "x"; } $_ = "x"; s/$a[12]/y/; print "12: $_\n"; $_ = "x"; s/$a[123]/y/; print "123: $_\n"; $_ = "x"; s/$a[-2]/y/; print "-2: $_\n"; $_ = "x"; s/$a[-22]

    正規表現の文字クラス - 兼雑記
    okagawa
    okagawa 2007/11/08
    本当ならひどい。勘弁してください。。
  • 更新履歴兼雑記 sed ってなんなの?

    あーなんか言語紹介といえばこんなのがあったのでした。sed ってなんなのかという、とてもよくある疑問に対して私なりの回答です。まず実用を考えると、 sed 's/hoge/hage/'このためだけに存在している言語です。メリットは perl -pe 's/hoge/hage/' より 4byte 短くてすむことだけです。これ以外の機能はスクリプト言語で十分なように思います。たまに勘違いしてる人がいる気がしますが、 y コマンドはカウンタを作るために存在しています。小文字を大文字に変換する、などと考えるとどのような時に使うのか皆目検討もつかず、ドツボにはまることうけあいです。気をつけましょう。ちょうど OOP を犬とかで教えるような話に似てるかもしれません。 で、 sed in depth 。 sed とはなにか? 誰がなんと言おうと、 sed は VM です。以下に VM の仕様を示しま

    更新履歴兼雑記 sed ってなんなの?
    okagawa
    okagawa 2007/11/05
    sed as a VM
  • 私的OCaml - 兼雑記

    YTさんとこなどを見て、私的に OCaml に思うところを。(以下完全に私見というか、私に OCaml がどう見えているか、です) OCaml はまぁいい言語だと思います。私的には基的にいい言語だと思うのですが、ウマは合わない。ゴルフ弱いし。まず、とりまく環境から。 不安定感。コンパイル通ればバグは無い、と断言するもののなんかよく End_of_file とかいう例外が飛んで異常終了したりします。あと個人的に例外の止めかたを知らないので、私にとって例外==終了です。コンパイルなんかしなくても絶対に異常終了しない Brainf*ck と比べてしまうと、どうしても不安。とある理由で非常に重宝していますが。 高速。 Brainf*ck に比べると格段に速く動作します。コンパイルも速いし。ただ Brainf*ck JIT コンパイラは前 Xbyak で書いたヤツの方が格段に速かった。 デバッグな

    私的OCaml - 兼雑記
    okagawa
    okagawa 2007/11/02
    私的OCaml
  • 私的 OCaml - 兼雑記

    http://d.hatena.ne.jp/shibacho/20050601/p7 id:shibachoさんとこなどを見て、私的に OCaml に思うところを。(以下完全に私見というか、私に OCaml がどう見えているか、です。) OCaml は素晴らしい言語だと思います。私的にはちょっと、完璧すぎる。まず、とりまく環境から。 安定感。コンパイラのバグなどあまり無さそう。なんかエライ人が数学的にどうこうらすい、っていう安心感。 高速。 OCaml のせいで遅い、と感じたことはありませんし、各種ベンチマークも高得点です。 デバッグなど。普通にできます。 プロファイルなど。普通に gprof でできてしまいます。 OCamlMakefile がちょっと便利すぎる。 (参考までに tello の Makefile の簡潔さを見てくださいませ) タダものじゃないプリプロセッサ、camlp4。

    私的 OCaml - 兼雑記
  • 更新履歴兼雑記 [Wheel] rlwrap で dabbrev っぽい挙動をさせる patch

    dabbrev は Emacs スキーの人は知ってますよね。 rlwrap もみんな大好きツールだときっと信じています。でまぁ、 rlwrap で補完をしたいけど単語登録とかめんどくせえ、というのが今回の主旨です。 http://shinh.skr.jp/tmp/rlwrap-0.26_comp_hist.patch 上記パッチをあてて -e か --complete-history オプションをつけるだけ。実装は超カンタンで history ファイルをそのまま completion 用のファイルとして喰わせてるだけ。 rlwrap -e ocaml とかしてから pr^ii^i とかで print_int が出るですよ。

    更新履歴兼雑記 [Wheel] rlwrap で dabbrev っぽい挙動をさせる patch
    okagawa
    okagawa 2007/04/12
    rlwrapでdabbrev
  • 1