タグ

ブックマーク / knenet.hatenadiary.jp (3)

  • 各種ソート - 象徴ヶ淵

    ソートの動作を良く知らなかったので勉強。bubble-sort以外はM.Hiroi's Home Page / xyzzy Lisp Programmingから。ほぼ写経。bubble-sortは破壊的に動作し、他は新しくリストを作るので非破壊的。そのかわりコンシングが多い。 (defun bubble-sort (lst &optional (test '<)) (let (p) (while (null p) (dotimes (i (1- (length lst)) (setq p (not p))) (when (funcall test (elt lst (1+ i)) (elt lst i)) (rotatef (elt lst (1+ i)) (elt lst i)) (setq p t))))) lst) (defun quick-sort (lst &optional (

    各種ソート - 象徴ヶ淵
    UDONCHAN
    UDONCHAN 2012/12/28
  • コンプガチャと銀のエンゼル - 象徴ヶ淵

    複数種類のカードを集める(コンプガチャ)のと、同じカードを複数集める(銀のエンゼル)のはどっちが大変なの? ということを確めてみる。 どちらも公平に、1種類あたり100枚に1枚の確率で引けるとしよう。必要な枚数(種類)を変えて、それぞれ何枚引けば揃えられるか、10000回試行した平均を示す。 必要数 同種 コンプ 1 100 100 2 200 150 3 300 183 4 400 208 5 500 229 こうして見ると、コンプの方が簡単じゃないか、と感じる。 しかし、実際に引いてみると、この計算通りの感触にはならない。その理由は2つある。 1つは、コンプの場合、当たる確率の見積りを間違えやすいことだ。当たり外れで考えると、最初は持っていないカードが多く、どれか1種引けば当たりになる。後半はダブりが多くなるので、段々当たりの割合が減っていく。当たりカードを持っているときの、残りの当た

    コンプガチャと銀のエンゼル - 象徴ヶ淵
    UDONCHAN
    UDONCHAN 2012/05/11
  • ピカチュウのセリフをマルコフ連鎖で生成する - 象徴ヶ淵

    ピカチュウのセリフがどういった構造かよく知らないが、想像の範囲でそれらしいものを生成してくれるジェネレータを作ってみた。生成には教科書的な単純なマルコフ連鎖を使っている。現在の状態から、既知の確率で次の状態に遷移する。それだけだと文の切れ目が分からないので、終端かどうかも出力する。 (setq pika-tb ; p1p2p3p4k1c1c2c3t1e1e2e3 (list (list "ピカ" nil 1 2 2 2 1 9 3 3 1 2 2 4) (list "ピッ" nil 4 1 1 1 1 0 0 0 1 1 1 1) (list "ピー" nil 4 4 0 4 8 0 0 0 3 1 1 1) (list "ピッカ" nil 2 2 2 2 1 4 2 2 1 2 2 2) (list "カー" nil 1 1 1 1 0 3 1 3 1 1 1 1) (list "チュウ

    ピカチュウのセリフをマルコフ連鎖で生成する - 象徴ヶ淵
    UDONCHAN
    UDONCHAN 2012/03/12
    いい
  • 1