2012-10-25 21 views

Odpowiedz

10

Istnieją dwie funkcje w Clojure, które warto wypróbować: mod i rem. Działają tak samo dla liczb dodatnich, ale inaczej dla liczb ujemnych. Oto przykład z docs:

(mod -10 3) ; => 2 
(rem -10 3) ; => -1 

Aktualizacja:

Jeśli naprawdę chcesz do konwersji kodu do Clojure, trzeba zdać sobie sprawę, że idiomatyczne rozwiązanie Clojure prawdopodobnie niczego nie wyglądać jak twoja Rozwiązanie JavaScript. Oto miły rozwiązanie, które myślę, że robi mniej więcej to, co chcesz:

(defn change [amount] 
    (zipmap [:quarters :dimes :nickels :pennies] 
    (reduce (fn [acc x] 
       (let [amt (peek acc)] 
       (conj (pop acc) 
         (quot amt x) 
         (rem amt x)))) 
      [amount] [25 10 5]))) 

(change 142) 
; => {:pennies 2, :nickels 1, :dimes 1, :quarters 5} 

Można patrzeć dowolnej funkcji nie rozpoznają na ClojureDocs. Jeśli po prostu nie rozumiesz stylu, prawdopodobnie będziesz potrzebować więcej programowania wrażeń z higher-order functions. Myślę, że 4Clojure jest dobrym miejscem do rozpoczęcia.

+0

Co powiesz na clojure ... var change = function (amount) { var QUARTER_VALUE = 25, DIME_VALUE = 10, NICKEL_VALUE = 5; var quarters = Math.floor (amount/QUARTER_VALUE); kwota% = QUARTER_VALUE; var dimes = Math.floor (kwota/DIME_VALUE); – user1585646

+0

@ user1585646 to nie jest clojure? – Pointy

+0

Wiem, ale chcę przekonwertować go na clojure. – user1585646