「プログラマ脳を鍛える数学パズル」 on Clojure Q02-fixed

先日投稿しました、「プログラマ脳を鍛える数学パズル」 on Clojure Q02のコードのレビュー、修正をid:ayato0211さんにしていただいたので修正版の投稿です。
id:ayato0211さんありがとうございました!!すごく感謝しています!!
また、自分で見返してみて不要なコード、名前が悪いものが見つかったのでそこの修正もしました。

以下修正後の回答

数学パズルonClojure-Q2-fixed

教えていただいて学んだこと

  • bool 値を返却したいというときに明示的にtrue false を利用しなくてもand などを上手く利用すれば省略可能である。
  • 実行時の段階で値を決定できるものは、関数である必要はない(defnでなくdefを利用する)
  • mapを利用しベクタを返却したい場合は mapv が利用できる
  • 文字列->数値の変換は read-string よりも Long/parseLong が好ましい
  • 明示的に do を書くときは副作用などを期待する場合のみ
  • reduceの利用
  • 分配束縛を利用し見通しよく
  • 副作用を期待する場合の doseq の利用

謝辞

改めて、id:ayato0211さんありがとうございました。
教えて頂いたことを参考にしまして、次からの問題も解いて行きたいと思います!!