这上面的题一开始很简单,但越来越难,到后面直接看不懂题了。所以做到哪算哪吧
先来第一题
Problem1 : Find the sum of all the multiples of 3 or 5 below 1000.
找出1000以下所有3的倍数以及5的倍数的和
没什么可分析的了,直接上代码
#一行就能解决 (0..999).select { |x| (x % 3 == 0) or (x % 5 == 0) }.reduce(:+)
注意reduce方法是1.8.7才有的
如果1.8.6以下要这么写
sum = 0 (0..999).select { |x| (x % 3 == 0) or (x % 5 == 0) }。 inject(|sum,n| sum += n) puts sum
还有一种算法就是分别求三的倍数的和以及5的倍数的和,把他们加一块再减15的倍数的和
会更快,但更长