Skip to content

Instantly share code, notes, and snippets.

@bouzuya
Created December 7, 2012 15:44
Show Gist options
  • Save bouzuya/4234063 to your computer and use it in GitHub Desktop.
Save bouzuya/4234063 to your computer and use it in GitHub Desktop.
(apply + (filter #(or (zero? (mod % 3)) (zero? (mod % 5))) (range 1000)))
@kohyama
Copy link

kohyama commented Dec 9, 2012

そうですね. 私も (range n) の方が簡潔で良いと思います.
要するに, 文句なし模範解答だと思います.

@tnoda
Copy link

tnoda commented Dec 11, 2012

@kohyama @bouzuya 個人的な好みなんですが,私は @kohyama(range 1 1000) 方式のほうが素直だと思います.どちらがいいと思っているわけではなく,どちらでも問題ないと思っているのですが,なかなか面白い議論だと思い,いろいろ考えるきっかけになりました.ありがとうございます.今週中というわけにはいきませんが,近いうちに考えをまとめようと思います.

@tnoda
Copy link

tnoda commented Dec 11, 2012

余談ですが,最近「仕様」だとか「設計」だとか,それらに対するベンダ・プログラマの態度・姿勢について考えています.(range n)(range 1 n) は,それらについてのヒントになりました.ありがとうございます.

@bouzuya
Copy link
Author

bouzuya commented Dec 13, 2012

@tnoda よく分かりませんが、お役に立てたならうれしいです。また考えた結果について教えていただけるとうれしいです。

rangeという名前の関数から想像できる動作として「開始と終了のふたつを指定して、その範囲の値を生成する」のは自然だとぼくは思います。ですので、開始・終了がはっきり見える (range from to)が良い、なんてのはどうでしょう?

でも (range 0 1000) と書いても 0 や 1000 を含むかどうかが分からないですね ([:-P

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment