まず1問目から。日本語訳を公開してくれているWikiがあるのでそちらのページもリンクすることにします。
問題
解答
最初の問題だけあって、別段難しくもありません。ほとんどFizzBuzz問題です。
0から999まで、公差1の等差数列から3あるいは5の倍数を抽出して合計すればいいわけです。
Scheme(Gauche)で書いてみました。multiple-of?
はn
がm
の倍数かどうかを示す述語で、iota
はSRFI-1に収録されているリスト構築子です。
(use srfi-1)
(define (multiple-of? n m) (zero? (modulo n m)))
(define (solve)
(apply + (filter (lambda (n) (or (multiple-of? n 3) (multiple-of? n 5)))
(iota 1000))))
(define (main argv)
(display (solve))
(newline))
コメント
コメントを投稿