タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

algorithmとClojureに関するyouzのブックマーク (2)

  • data.priority-mapを使ってダイクストラ法で迷路を解く - Homoiconic Days

    (このエントリは Clojure Contrib Library Advent Calendar 14日目の記事です。) はじめに 今回はdata.priority-mapについてです。以前はclojure.contrib.priority-mapと呼ばれていました。 data.priority-mapは優先度つきマップ(priority map)の実装を提供します。優先度つきマップは,Clojureコアが提供するソートされたマップ(sorted map)と非常に類似したデータ構造です。両者の違いは,ソートされたマップがキーによってソートされるのに対し,優先度つきマップは値によってソートされるという点です。 今回は,data.priority-mapの基的な使い方と,優先度つきマップの応用例としてダイクストラ法を使って迷路を解く例を見ます。 インストール data.priority-ma

    data.priority-mapを使ってダイクストラ法で迷路を解く - Homoiconic Days
  • 続・エラトステネスの無限の篩 - 水底で思うこと

    題の前に、前回のコードを少し書き換えた*1ので、まずはそちらから。 ♯エラトステネスの無限の篩 Ver.1 アルゴリズム上の変更点は倍数リスト*2を「n を除く n の倍数」ではなく、「n^2 を初期値とする n の倍数」にしただけです。 (defn- diff-seq [s1 s2] (let [x1 (first s1), x2 (first s2)] (cond (= x1 x2) (recur (rest s1) (rest s2)) (> x1 x2) (recur s1 (drop-while (partial > x1) s2)) (< x1 x2) (let [[s1a s1b] (split-with (partial > x2) s1)] (lazy-cat s1a (diff-seq s1b s2)))))) (defn- arithmetic-seq [start

    続・エラトステネスの無限の篩 - 水底で思うこと
  • 1