私は Clojure を学ぼうとしているので、まず Euler の課題のプロジェクトに取り組むのが良い方法だと思いました。最初の課題は、3 または 5 で割り切れる 1000 未満の数をすべて合計することです。
私の元のコードは次のとおりです。
(defn div3 [input-no] (zero? (mod input-no 3)))
(defn div5 [input-no] (zero? (mod input-no 5)))
(reduce + (filter (or div3 div5) (range 1 1000)))
しかし、それは機能せず、フィルターは 5 で割り切れる数ではなく、3 で割り切れる数のリストを返すだけであることが判明しました。
コードを次のように変更しました。
(defn div3or5 [input-no] (or (div3 input-no) (div5 input-no)))
(reduce + (filter div3or5 (range 1 1000)))
正しい結果が得られましたが、元のコードが機能しなかった理由がわかりません。
誰かがこれに光を当てることができますか?