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

tree-seq と flatten

◆tree-seq をちゃんと理解したい 理解していなかったのでいろいろやってみた。 (defn tree-seq "Returns a lazy sequence of the nodes in a tree, via a depth-first walk. branch? must be a fn of one arg that returns true if passed a node that can h…

4引数で partition

一見単純だけど色々お世話になってる便利な関数 partition。4引数で呼び出せるのをしらなかった。 (def a [1 2 3 4 5 6 7 8 9 10 11]) ;; 2引数 (partition 4 a) ;=> ((1 2 3 4) (5 6 7 8)) ;; 3引数 (partition 4 3 a) ;=> ((1 2 3 4) (4 5 6 7) (7 8 9 1…

Clojureで連番リストの歯抜け取得

古い記事ですが、ちょっと面白い問題なのでやってみた。=> 連番リストの歯抜け ■(partition 2 1) って便利 (defn pick-toothless [coll] (->> coll (partition 2 1) (remove #(= -1 (apply - %))) (mapcat (fn [[a b]] (range (inc a) b)))))(pick-toothless…

Clojure で棒読みちゃんクライアント再び

以前実験的に作りましたが、あれから色々コードの書きかたを憶えたので、もうすこしちゃんと書いてみました。アドバイスなどありましたら是非。 ■棒読みちゃんクライアントプログラム (ns bouyomi-client.core (:gen-class)) (defmacro create-ctor "デフォ…

整数を Java のバイト配列に変換する。

以下、試行錯誤した内容を順を追って書く。 急いで結論が見たい人は、ここへジャンプしてください。 ■整数をバイト列(シーケンス)へ変換 これはそれ程難しくない。方法はいろいろあると思いますがここでは末尾再帰で。 (defn byte-split [n] (loop [n n, col…

Clojureのマップ(連想配列)のキホン その1

2011年5月現在、最新Release版である clojure 1.2 を前提にしています。 ■マップの種類 Clojureのマップは三種類あります。repl等での表示は同じに見えますが型はそれぞれ違います。 (array-map :a 10 :b 20 :c 30) ;=> {:a 10, :b 20, :c 30} (hash-map :a …

OS起動時の SATAエラー

ここ数日、Ubuntuの起動時にHDDがカコンカコンと何度も音をたて、画面にはエラーらしきメッセージが出続けるという、心臓に悪い現象が頻発していました。 それでも、暫く放置しているとOSはちゃんと起動するのでそのままにしていたのですが、いいかげんヤバ…