Created
December 9, 2012 16:18
-
-
Save plaster/4245866 to your computer and use it in GitHub Desktop.
Problem 1
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
(use 'clojure.set) | |
(defn n-multiples [n end] (set (range 0 end n))) | |
(defn solve [] | |
(apply + (union (n-multiples 3 1000) | |
(n-multiples 5 1000)))) |
@kohyama のコメントを見る前だったので,なんだか同じようなことも書いていますが,私は (apply + coll)
派ですね. > http://tnoda-clojure.tumblr.com/post/37700304493/apply-and-reduce (@ponkore 版解答のコメントに貼ったのと同じ URL)
@plaster https://gist.github.com/4245866#gistcomment-621381 の apply
/my-*
実験分かりやすくて参考になりました.apply
に渡す関数の作り方の勉強にもなりました.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
数値のシーケンスの総和に関しては
なので, clojure の
+
がもし二引数関数ならreduce
一択なんですが, そもそも+
自体が可変長引数を受け入れる力があるので, 可変長の要素に対する対応をreduce
で強制するのではなく,+
が持っている機能 (たとえそれが内部的にreduce
と等価だとしても) を使って上げる方が, より高い方の抽象化を使っていることになっていいんじゃないか. というのが私の考えです.ま, おっしゃっているように, で結局
+
もしくはapply
の動作は自分の好み(遅延性があるかとか)にあっているか? というのも一つの尺度ですよね. 参考になります.