Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,7 @@
|
|||
(def arabic->roman
|
||||
(partial clojure.pprint/cl-format nil "~@R"))
|
||||
|
||||
(arabic->roman 147)
|
||||
;"CXXIII"
|
||||
(arabic->roman 99)
|
||||
;"XCIX"
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
(def roman-map
|
||||
(sorted-map
|
||||
1 "I", 4 "IV", 5 "V", 9 "IX",
|
||||
10 "X", 40 "XL", 50 "L", 90 "XC",
|
||||
100 "C", 400 "CD", 500 "D", 900 "CM"
|
||||
1000 "M"))
|
||||
|
||||
(defn int->roman [n]
|
||||
{:pre (integer? n)}
|
||||
(loop [res (StringBuilder.), n n]
|
||||
(if-let [v (roman-map n)]
|
||||
(str (.append res v))
|
||||
(let [[k v] (->> roman-map keys (filter #(> n %)) last (find roman-map))]
|
||||
(recur (.append res v) (- n k))))))
|
||||
|
||||
(int->roman 1999)
|
||||
; "MCMXCIX"
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
(defn a2r [a]
|
||||
(let [rv '(1000 500 100 50 10 5 1)
|
||||
rm (zipmap rv "MDCLXVI")
|
||||
dv (->> rv (take-nth 2) next #(interleave % %))]
|
||||
(loop [a a rv rv dv dv r nil]
|
||||
(if (<= a 0)
|
||||
r
|
||||
(let [v (first rv)
|
||||
d (or (first dv) 0)
|
||||
l (- v d)]
|
||||
(cond
|
||||
(= a v) (str r (rm v))
|
||||
(= a l) (str r (rm d) (rm v))
|
||||
(and (> a v) (> a l)) (recur (- a v) rv dv (str r (rm v)))
|
||||
(and (< a v) (< a l)) (recur a (rest rv) (rest dv) r)
|
||||
:else (recur (- a l) (rest rv) (rest dv) (str r (rm d) (rm v)))))))))
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
(a2r 1666)
|
||||
"MDCLXVI"
|
||||
|
||||
(map a2r [1000 1 389 45])
|
||||
("M" "I" "CCCLXXXIX" "XLV")
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
(def roman-map
|
||||
(sorted-map-by >
|
||||
1 "I", 4 "IV", 5 "V", 9 "IX",
|
||||
10 "X", 40 "XL", 50 "L", 90 "XC",
|
||||
100 "C", 400 "CD", 500 "D", 900 "CM"
|
||||
1000 "M"))
|
||||
|
||||
(defn a2r
|
||||
([r]
|
||||
(reduce str (a2r r (keys roman-map))))
|
||||
([r n]
|
||||
(when-not (empty? n)
|
||||
(let [e (first n)
|
||||
v (- r e)
|
||||
roman (roman-map e)]
|
||||
(cond
|
||||
(< v 0) (a2r r (rest n))
|
||||
(= v 0) (cons roman [])
|
||||
(>= v e) (cons roman (a2r v n))
|
||||
(< v e) (cons roman (a2r v (rest n))))))))
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
(a2r 1666)
|
||||
"MDCLXVI"
|
||||
|
||||
(map a2r [1000 1 389 45])
|
||||
("M" "I" "CCCLXXXIX" "XLV")
|
||||
Loading…
Add table
Add a link
Reference in a new issue