タグ

ブックマーク / www.kmonos.net (19)

  • d.y.d.

    22:43 21/11/09 ヒープソートが好きである ranha さんが、 Approaching Heapsort via Lazy Mergesort という記事を公開していらして、 遅延評価の言語で書くマージソートの計算過程で何が起きているかを見ていくと、 だんだんヒープソートが見えてきた…!という大変面白い記事なのですが、 その話の枕に「稲葉さんというヒープソート大好き人間がいるがいったいどこが良いのか」 という形で私が登場していたので、 思わず何故私がヒープソートが好きであるかをしたためた長文をTwitterのDMで ranhaさんに送りつけてしまいましたという経緯があります。 元ネタの @pi8027 さんの発表 が公になったのに合わせてranhaさんの記事も公開されたみたいなので、 自分の脳内出力もついでにここに書き留めておこうかと思いました。 お二方のように技術的にしっか

  • ICFPコンテストでした - d.y.d.

    17:55 13/08/12 ICFPコンテストでした ICFP プログラミングコンテスト が終わりました。 今年は @nya3jp @phoenixstarhiro @dmikurube @kinaba の 4 人チームで参戦していました。 C++ で計算バックエンド、 Python でサーバーとのやりとりと計算モジュールをつないで答えを送りまくる最上位のロジックとフロントエンド、 という構成でした。 簡単なまとめ 今年の問題は、 『サーバーに1400個くらいプログラムが置いてあります。 プログラムは 64bit 整数を 1 個受け取って、 何か計算して 64bit 整数を 1 個返す関数です。 サーバーは、プログラムの番号と引数を指定すると実行して結果を返してくれます。 どういうプログラムが置いてあるのか、できるだけ沢山当ててみなさい!』 という問題。 当てた個数が多ければ多いほど好ス

  • Pythonとプログラミングコンテスト

    www.kmonos.net Python と プログラミングコンテスト 稲葉 一浩 (k.inaba) http://www.kmonos.net/ www.kmonos.net 超特急自己紹介  言語ラブ(浮気性)  C++, JavaScript, D, Java, PHP, OCaml, Icon, Haskell, Erlang, Ruby, Python, …  「みんなのPython」  で Python はじめました  柴田さんありがとうございます  つまり超初心者(Python歴3ヶ月)  ”ビギナーのPython体験記” www.kmonos.net プログラミングコンテスト?  めちゃくちゃ色々種類があります  今日は特に 短時間で“Algorithm Quiz”を解くコンテスト Google Code Jam ACM/ICPC Sphere

  • Devils and Angels

    Moved to angelsort/viewer.html

  • クイックソート殺し - d.y.d.

    19:39 12/09/01 クイックソート殺し こういう系統の話。 Quicksort Killer (kazoo04さん) qsortを撃墜し(最悪ケースを与え)てみた。 (qnighyさん) A Killer Adversary for Quicksort (shinhさんの解説) Webアプリケーションに対する広範なDoS攻撃手法(hashdos)の影響と対策 (徳丸さんの解説) ただのクイックソートは要素数 N の配列をソートするのに最悪 N2 オーダの時間がかかってしまう、 そしてそれは pivot を偏って選びまくってしまった時に発生する、というのはよく知られた話だと思います。 といっても、広く使われている言語/ライブラリのソート関数はその辺り気をつけられていて、最悪時も O(N log N) になるアルゴリズムで実装されている…と思い込んでいたのですが(例えば C++

  • アルゴリズムコンテストの挑み方 (3) - d.y.d.

    17:19 08/11/27 TopCoder Code Jam の練習に……と思ってしばらく前から TopCoder のSRMに参加してたのですが、 せっかくなので cafelier@SRM に記録をつけることにしました。 どういう試行錯誤をしながら提出した時のコードにいたったのかを、 できるだけ詳細にメモろうと思っています。 426以前のは記憶から掘り起こして書いたのでちょい大ざっぱですが。 これまで何回かここで書いたような整然とした考え方を当に自分がしているかいうと、 してないよなー、と薄々思ってしまっているので、じゃあどういう風にやっているんだろうかと。 自分のふり見て我がふり直す。 20:26 08/11/24 論文 PLAN-X 2009 通ったみたいです。ばんざい。 ただでさえD論まったく間に合う気がしないのに、camera ready版なんて作ってる時間が… オートマト

    agw
    agw 2012/02/23
    大変分かりやすい。
  • アルゴリズムコンテストの挑み方 (2) - d.y.d.

    21:25 08/10/27 論文 の締め切り終わったら頑張った自分へのご褒美(笑)であれとこれとそれをやる時間をとるぞー! ……みたいなことを思っていたはずなのに、いざ提出し終わると気が抜けて何一つやる気がでない問題。 困った困った。 ナイチル たくさん人がいらしてる今のうちに 「ナイトメア☆チルドレン」新装版 面白いよみんな買おうぜ! などと書いてみる。 自分のマンガの趣味はわりと平凡だと思ってて、 流行ってるマンガは大抵好きだし自分の好きなのはだいたい流行ってるし。 なのになぜだか藤野もやむ作品だけは唯一の例外で、とっても不思議でならない。 100回くらいアニメ化されてて然るべきだと思う。 何回か書いてますがとにかく最終話が好きで、 そこまでのシナリオが一気に集まって一つ一つのセリフが3倍の重みを持つように収斂していく幕引き。 あれは良い。 17:12 08/10/24 アルゴリズム

  • アルゴリズムコンテストの挑み方 - d.y.d.

    17:29 08/09/30 クロスワード 暇つぶしに "Clueless Crossword" という冊子を買ってみて意外とハマっています。 クロスワードパズルなんだけど、単語のヒントの代わりに、 各マスに1~26の数字が振ってあって同じ数字のマスには同じA~Zが入るように埋めるというもの。 「母音っぽくて二連続して語尾にも出てくるのは多分 E だろう、もしかしたら O の可能性はなくもないけど」 みたいに埋めていく。 ちょっと違うけど フラッシュであった。 20:15 08/09/28 だいちのよろい そろそろ日に戻る前に観光するぞ月間、ということにして、ウルル(エアーズロック)に行ってきました。 もっとワイルドな感じかと思ったら、完全にリゾートのリゾートによるリゾートのための地帯になってました。 まあそんなもんか。 日は強風のため登るの禁止とのことだったので、周りから見るだけ。

  • 計算のきまり - d.y.d.

    00:41 11/08/04 計算のきまり ( )を使った式の計算には次のようなきまりがあります。 (□ + ○) × △ = □ × △ + ○ × △ (□ - ○) × △ = □ × △ - ○ × △ ... たし算とかけ算には、次のようなきまりがあります。 □ + ○ = ○ + □ (□ + ○) + △ = □ + (○ + △) □ × ○ = ○ × □ (□ × ○) × △ = □ × (○ × △) この考えを使って、くふうして暗算で計算しよう。 小学校算数 5学年 - Wikibooks 分配法則・交換法則・結合法則。 とても当たり前で、当たり前すぎて、ほとんどの人は、もう特に意識することもない法則かもしれません。 でも、プログラミングを知っている僕らは、立ち止まってこの法則の価値に触れることができる。 末尾再帰化 最近のコンパイラは、こんな最適化をします。 i

  • 階乗を求める - d.y.d.

    22:56 10/09/04 階乗を求める 去年聞いた中で、私が一番感動した式の話。 k! = limn→∞ nk / nCk kの階乗は、「nのk乗 ÷ n個のものからk個選ぶ組み合わせの数」という式で n を無限に大きくしていったときの収束先、である。 特に難しい証明が要るとかではなくて、nCk = n(n-1)(n-2)...(n-k+1) / k! であることを使うと、 limn→∞ nk / nCk = limn→∞ nk k! / n(n-1)(n-2)...(n-k+1) で、n が k に比べて十分大きければ n も n-k+1 もほとんど同じ値なので、 分子も分母もだいたい n を k 個かけているわけでして、 その部分が相殺して、k! が残るという寸法。 (厳密な表現ではないので、気になる人は厳密に証明してください。) 実装 と、この式自体はそんなに不思議ではないのです

  • d.y.d. 2倍だけじゃない

    10:01 10/07/20 それでも2倍だ 先日のvectorの伸長度合いの記事に関して 当に1.5倍のほうがメモリ効率がよいのか という反応をいただきました。とても興味深い。みんな読みましょう。 自分の理解メモ: 「再利用ができるから嬉しい」等の議論をするなら、 今までに確保したメモリ (1 + r^1 + ... + r^k) のうち、 有効に使えてるメモリ r^{k-1} (バッファ拡大直後) や r^k (次のバッファ拡大直前) の割合で評価してみようじゃないかという。 まず簡単のために再利用をしない場合を考えると、この割合はそれぞれ (r-1)/r^2、 (r-1)/r になります(途中計算略)。 この利用率が最悪になる瞬間 (r-1)/r^2 を最善にしよう、 という一つの指標で考えてみると、式を微分なりなんなりしてみると r = 2 で最大(25%)となることがわかります

  • d.y.d. - 最短性をチェックする

    17:31 10/01/26 言語雑談会 言語雑談会 なるものに行ってきました。 自分は主に最近のD言語の話題 [PDF] [PPTX] についてと、 最近読んだ Pattern Calculus がイマイチ心に響かなかったという話と、 これも最近読んだ Prolog で SAT ソルバ という論文が格好良すぎて卒倒しそうです、などの話題を雑談していました。 SAT の話をしていてふと突然気づいたんですが、私が今までSATソルバに落としてみたことのある問題は、 すべて割と簡単に CNF(SATソルバがそのままべてくれる綺麗な形式の論理式) ができあがる問題だったようです、数独とか。 任意の命題論理式をCNFに変換できる指数爆発しない方法をそういえば知らないぞ俺!としゃべってたら soutaro さんが素晴らしい解説 をして下さいました。ありがたや。 あと shinhさんの 「コンピュータ

  • 思考実験: returnを関数と思ってみる話 - d.y.d.

    21:07 09/03/26 zipWithN twitterでいけがみさんが張ってらした論文が面白かったです。 map f [a1, a2, ..., an] ==> [f a1, ..., f an] zipWith f [a1, ..., an] [b1, ..., bn] ==> [f a1 b1, ..., f an bn] zipWith3 f [a1, ..., an] [b1, ..., bn] [c1, ..., cn] ==> [f a1 b1 c1, ..., f an bn cn] ... zipWith7 f [a1, ..., an] [b1, ..., bn] ... [g1, ..., gn] ==> [f a1 b1 … g1, ..., f an bn … gn] Haskell98 の標準ライブラリの関数ですけど、 1引数関数 f と1つのリスト as

  • 最初の乱数 - d.y.d.

    23:09 09/05/28 BOOK OFF ここのところ、BOOK OFF の タメシ買いセット というのを大量に試し買いしてみてました。各セット2つずつ計90冊。 「どう見てもただの在庫整理だろ」というような意見もあるかと思うのですが、 個人的には、これ、すごい面白そうだなーと思ったので。 何かの拍子に「自分が読んだことない作品を読んでみよう!」と思っても、 自分で探してみて買うのだと、どうしても、 どこか自分が好きそうな方向に偏ってセンサーが反応してしまうんですよね、結局。 逆にこういう完全に強制他人のチョイスの下でやってくるなら、 そういうこともなく意外な作品に出会えるのではないか、とか。 あと、アマゾン完全ランダム買いとかと違って、 蔵出しに回されるくらい世の中に出回っている程度には売れているのが来るはずで、 気の大外れが大集合ということにもならないだろう、と。 というわけ

  • イヌネコ - d.y.d.

    03:14 08/08/31 LLFuture 行ってきました。まとめ記事は何百人も書いてそうなので、以下、これにかこつけて自分語りをする。 ☆ Larry Wall の基調講演。ひたすら Parser の話をしてて素晴らしかった。 ☆ 100年の言語…は、 Ypsilon の藤田さんが、エラーメッセージのわかりやすさについて考えてますか?という問いかけを されてたのが印象に残っています。個人的に この頃 から気になってるんですけども、 言語内DSL のようなものを作ること&そのDSLが正常動作するときに 裏でホスト言語で何が起きているかをまったく気にしなくていいようにすることは簡単でも、 そのDSLがそのDSLのシンタックスや静的セマンティクスとして間違っているときに適切なエラーを 出せるようにするのは非常に面倒、という感覚があります。ホスト言語の意味でのエラーを 出されてもユーザ側とし

  • d.y.d. memo: POPL 2

    17:17 08/01/30 ところで C++JavaScriptPHP が批判されてるのを見ると思わず何か言いたくなってしまうのだけど、 考えてみるに、他の言語だと割とどうでもいい。そういう意味では、今の自分が好きなプログラミング言語は この3つということになるのかなあ……などと徒然なるままに思いました。 単純に、つきあいが長い方から3つというだけかもしれない。 いやしかし、PHPに対する批判の多くはその通りであるとは思うのですが。 Attacking PHP で触れられてる「リストであり辞書でもある」 array ってあれは普通に便利じゃないです? 結構他の言語でも欲しくなるのですが。 17:08 08/01/29 PHP で Yコンビネータ PHP じゃ Y コンビネータつくれない と聞いて。 <?php // PHPでは関数呼び出しは 関数名(...) か 変数(...

  • letsboost::lambda

    abstract 必要なヘッダ <boost/lambda/lambda.hpp> 基, <boost/lambda/bind.hpp> 関数を使いたいとき, <boost/lambda/if.hpp> if, elseを使いたいとき, <boost/lambda/loops.hpp> for, while, <boost/lambda/switch.hpp> switch, case, <boost/lambda/construct.hpp> コンストラクタ, <boost/lambda/casts.hpp> キャスト, <boost/lambda/exceptions.hpp> try, catch, <boost/lambda/algorithm.hpp> STLの標準アルゴリズム, 出来ること 無名関数 リファレンス en / jp sample サンプルの動作確認バージョン [

  • w.l.o.g. ギャップバッファ

    04:40 04/06/04 ピーステーブル PieceTable とも言う。文字列の Piece(小片)を繋げて、 一つの巨大な文書を表現する方式。 検索すると引っかかる文書のほとんどが AbiWord 関係なので、 このワープロソフトの主要な内部データ構造ということなのかな。 他に、MS-WordやOpenOffice.org関連の文書にも登場していて、 基的に単なるテキストエディタよりは、文字に付加情報をくっつける系の 編集ソフトに使われる場面が今のところ多いみたいです。 余談ですがAbiWordは、綱渡り的にですがBeOS版の開発が続いている貴重なワープロソフトなのです。感謝感謝。 概要 ファイルを読み込んだとしましょう。ABCDEFG、という7文字のファイル。 とりあえず、7文字分のOrigという名前のバッファを用意して、そこに格納します。 それと別に、Addという名前の空のバ

  • Let's Boost - インストール方法

    letsboost::ビルド see install.html presented by k.inaba (kiki .a.t. kmonos.net) under

  • 1