Ho scritto il seguente codice per calcolare il più grande divisore comune di due numeri positivi. Ci sono alcune cose nel codice che non sono ottimali o abbastanza clojuriane, e in tal caso quale sarebbe il modo più cloujeriano di fare GCD?Greatest Common Divisor in Clojure
(def gcd (fn [a b] (->> (map (fn [x]
(filter #(zero? (mod x %)) (range 1 (inc x))))
[a b])
(map set)
(apply clojure.set/intersection)
(apply max))))
(gcd 1023 858)` => 33
Grazie. Dato che sono un principiante, potresti spiegare quale manipolazione di sequenza per operazioni numeriche nel mio codice è? E sarei grato se potessi presentarmi una fonte per saperne di più sui trasduttori – amirteymuri
E l'algoritmo è stato utilizzato l'algoritmo Euclideo? – amirteymuri
Modificherò con altre sequenze e sì, questo è euclids –