アラビア数字→命数変換

https://gist.github.com/774229


(def digit {\0 "" \1 "一" \2 "二" \3 "三" \4 "四" \5 "五" \6 "六" \7 "七" \8 "八" \9 "九"})

(defn digit-keta [d m]
  (if (= (digit d) "") ""
      (if (and (not= m "") (= (digit d) "一")) m
	  (str (digit d) m))))

(defn digits-to-sen [digits]
  (loop [d digits
	 m ["" "十" "百" "千"]
	 out ""]
    (if (empty? d) out
	(recur (rest d) (rest m) (str (digit-keta (first d) (first m)) out)))))

(def meisuu ["" "万" "億" "兆" "京" "垓" "叙" "穣" "溝" "澗" "正" "載" "極" "恒河沙" "阿僧祇" "那由多" "不可思議" "無量大数"])

(defn digits-to-meisuu [digits]
  (if (= digits "0") "零"
      (loop [d (partition-all 4 (reverse digits))
	     m meisuu
	     out ""]
	(if (empty? d) out
	    (recur (rest d) (rest m) (str (digits-to-sen (first d)) (first m) out))))))