タグ

algorithmに関するanotherのブックマーク (7)

  • Spaghetti Source - アトキンのふるい

    ソースコード void sieve_of_atkin() { int n; for (int z = 1; z <= 5; z += 4) { for (int y = z; y <= sqrtN; y += 6) { for (int x = 1; x <= sqrtN && (n = 4*x*x+y*y) <= N; ++x) isprime[n] = !isprime[n]; for (int x = y+1; x <= sqrtN && (n = 3*x*x-y*y) <= N; x += 2) isprime[n] = !isprime[n]; } } for (int z = 2; z <= 4; z += 2) { for (int y = z; y <= sqrtN; y += 6) { for (int x = 1; x <= sqrtN && (n = 3*x*x+y*

    another
    another 2008/04/05
    エラトステネスのふるいより速いそうだ。via http://d.hatena.ne.jp/Gemma/20080402
  • 重み付けシャッフル、再び - snippets from shinichitomita’s journal

    昔のエントリ。一年前。 置換によるシャッフルと違って、weight値のところを適当に変化させれば、要素ごとに重みづけてのシャッフルもできると思う。たとえばよく聞く曲は優先的に前の方に持ってくるとか、その逆とか。iTunesのシャッフルがそうなってるかどうかは知らないけれども。 JavaScriptの配列をsort関数でシャッフルする - snippets from shinichitomita’s journal 今頃、そういうことをやろうとして、適当じゃなくちゃんと実装しようとして、はまってきた。まあ適当にやればそれでもありなだけに、逆に気にかかるという罠。 つまり、重み付けシャッフル、というのがあったとして、さて一体どういうのが正しい問題設定なのかが、よくわからない。ある要素がWの重みを持っていたとして、どのような振る舞いのシャッフルを期待するのが妥当なのか。 まずは整数倍の場合で考え

    重み付けシャッフル、再び - snippets from shinichitomita’s journal
  • [Tokyo.pm] Re: [Tokyo.pm] JUS感想

    another
    another 2006/02/04
    Schwarzian Transformを超えるUtashiro Tansform?
  • イケてないプログラム(使えない成果物)に見られる3つの共通点

    クイックソートの話で書いたとおり、相変わらず Excel - VBA と格闘する日々が続いております・・・orz 「大企業にありがちな問題。委託開発の甘い罠・・・」でも書いたとおり、今まで外注して作ったソフトウェアってほぼ 100% の確率でイケていないものが完成してます。年末に納品されたソフトウェアのできも酷いの何のって・・・ さて、いままで見てきたイケてないプログラムのダメソースに共通して言えることが3点ありまして、 DRY ( Don’t Repeat Yourself ) でない。同じもしくは似たソースのコピペが至る所に散在する。 ロジックに無駄が多すぎ。行き当たりばったりで作った感、満点。 アルゴリズム知らなさすぎ。馬鹿ループ処理で時間かかりすぎ。 のいずれか、もしくは全部が当てはまります。大抵は全部ですね。こういったソースが納品されると、センス無いなぁ〜と思っちゃうわけ。こうい

  • Dancing Links - Wikipedia

    The Dancing Links algorithm solving a polycube puzzle In computer science, dancing links (DLX) is a technique for adding and deleting a node from a circular doubly linked list. It is particularly useful for efficiently implementing backtracking algorithms, such as Knuth's Algorithm X for the exact cover problem.[1] Algorithm X is a recursive, nondeterministic, depth-first, backtracking algorithm t

    Dancing Links - Wikipedia
    another
    another 2005/12/18
    なにやらすごそうなアルゴリズム発見。いずれ読む。Knuth先生作。
  • コードを短くするのって楽しいですよね?(12) - やねうらおブログ(移転しました)

    61byteに達するまで、日top coderたちのあふれんばかりの才能と時間を大量に浪費し続けたこの問題も、そろそろ幕切れである。関わった人たちに敬意を表したい。 id:tanakh:20051119さん 最初にこの問題を紹介してくれた。 kikさん 早い段階で110byteを記録。稲葉さんに影響。 稲葉さん 正攻法で108byteにして、長らく上位に位置していた。 namasuteさん 106byteはおそらく正攻法だと思われるが、その真偽のほどは不明。 たにぐちさん Inputの解析の糸口をつかんだ id:yaneurao そして俺様!(`ω´) たにぐちさんのつかんだ糸口を頼りに、すべてのInputを解析し、ブレークスルーを巻き起こした。 id:oneillさん 文字リテラルで短縮化することを発案。 ロベールさん 文字リテラルのサーチ等 id:kurimura:20051130

    コードを短くするのって楽しいですよね?(12) - やねうらおブログ(移転しました)
    another
    another 2005/12/06
    確率に訴えてまで1バイトでもコードを削ろうとする漢たち。凄いものを見逃していた。2.5進法encodingは必見。
  • 単方向linked listの循環参照判定をO(n)で行なう - やねうらおブログ(移転しました)

    「諸悪の根源は物理的」より。(id:ladybug:20051116経由) http://www.cotton-tree.com/garyu/archives/2005/11/post_156.html 単方向リンクリスト(連結リスト)がある。ノード数を n とするが、n の値は 分からない。リスト中にループ(循環参照)が存在するか否かを O(n) で判定する アルゴリズムを示せ。ただし、リストの各ノードの内容を変更してはならない。 つまり、単純にポインタが指したノード全てにマーキングをしておいて、 新しいノードに移るたびにマーキングされているかを調べることで判定することは 出来ない。 no markingが条件として与えられているが、当然、no labeling,no recursionで求めなければならない。labelingありなら、たとえば以下のように簡単に求まる。 bool isC

    単方向linked listの循環参照判定をO(n)で行なう - やねうらおブログ(移転しました)
    another
    another 2005/11/22
    via 結城さん。実に美しいアルゴリズムだ。(ところで?Berってアルゴリズムには興味ないの? と挑発)
  • 1