Advertisement
Guest User

fraction-clojure

a guest
Mar 16th, 2017
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (defn parse-int [s]
  2.    (Integer. (re-find  #"\d+" s )))
  3.  
  4. (defn mult [x y]
  5.   "Умножение в столбик двух чисел в виде строки"
  6.   (let [x (map #(parse-int (str %)) (reverse x))
  7.         y (map #(parse-int (str %)) (reverse y))
  8.         summarize-it (atom [])]
  9.     (loop [current-multiplier (last x)]
  10.       (when (not= current-multiplier nil)
  11.         (swap! summarize-it
  12.           (into @summarize-it
  13.             (reduce
  14.             (fn [coll-sum unit-of-y]
  15.               (let [leftover (atom 0)
  16.               multiple (fn [multiplier left] (+ (* unit-of-y multiplier) left))]
  17.               (swap! leftover (quot (multiple unit-of-y @leftover) 10))
  18.               (if (= unit-of-y (last y))
  19.                 (do
  20.                   (into coll-sum (rem (multiple unit-of-y @leftover) 10))
  21.                   (into coll-sum (quot (multiple unit-of-y @leftover) 10)))
  22.                 (into coll-sum (rem (multiple unit-of-y @leftover) 10))))
  23.               ) [] y)))
  24.             (recur (drop-last x))))))
  25.  
  26. (mult "547" "83")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement