Created
December 11, 2012 14:50
-
-
Save tnoda/4259078 to your computer and use it in GitHub Desktop.
Project Euler Problem 5 #mitori_clj
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns tnoda.projecteuler.problem-5 | |
(:import org.apache.commons.math.util.MathUtils) ; [org.apache.commons/commons-math "2.2"] | |
(:use clojure.test)) | |
(defn- solver* | |
[n] | |
(reduce (fn [^long x ^long y] (MathUtils/lcm x y)) (range 1 (inc n)))) | |
(def solver (partial solver* 20)) | |
(is (= 2520 (solver* 10))) |
Apache Commons のような既存の Java ライブラリを使ってコーディングの量を減らせるのも,Clojure の長所の一つだと考えています.Maven リポジトリと Leiningen が無ければ Clojure 使っていなかったかもしれないくらい,便利です.
Maven リポジトリ + Leininge で、既存ライブラリを手軽に使えているというのは、ぼくも強く感じています。また、Clojars を使えば、自作ライブラリを公開するのも簡単です。
*warn-on-reflection*
ぼくも試してみます。
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
型ヒントは普段使わないですが、よくよく考えると、リフレクションを使用して型を判別するのって結構コストがかかりますね。
Project Euler だと型ヒントの恩恵を受ける機会が多そうなので、次の問題あたりで試してみます。
@kohyama @ypsilon-takai
おお、clojure.contrib は 1.3 からそれぞれ独立したライブラリとしてメンテナンスされるようになっていたのですね。全く知らなかったです。
リンク先の情報、とても助かります。