2011-10-01から1ヶ月間の記事一覧

「数字混じり文字列ソートをClojureで」を改良してみた

一昨日のコードがどうも納得いかなかったので改良しました。 元ネタはどう書く?.org 「数字混じり文字列ソート」 ;; clojure 1.2.1 (use 'clojure.contrib.str-utils 'clojure.contrib.core) (defn apply-flip [f a b] (f b a)) (defn parse [s] (->> (re-p…

数字混じり文字列ソートをClojureで

面白そうな問題見付けたのでやってみた。 数字混じり文字列ソート ~ Rubyとの血みどろの闘い ~ 元は、どう書く.org のちょっと前のネタみたい。 (use 'clojure.contrib.str-utils) (defn apply-flip [f a b] (f b a)) (defn prepare [n xs] (->> xs (re-part…

無限シーケンスから組み合わせ生成

組み合わせ生成関数(無限シーケンス対応版)を作ってみました。 ;; Ver.1 (defn- combinations* [xs combs] (when-first [x xs] (let [new-combs (map (fn [c] (conj c x)), combs)] (lazy-cat new-combs (combinations* (rest xs) (concat combs new-combs…

続・エラトステネスの無限の篩

本題の前に、前回のコードを少し書き換えた*1ので、まずはそちらから。 ♯エラトステネスの無限の篩 Ver.1 アルゴリズム上の変更点は倍数リスト*2を「n を除く n の倍数」ではなく、「n^2 を初期値とする n の倍数」にしただけです。 (defn- diff-seq [s1 s2]…