まずは、問題1をやってみた。
問題内容
If we list all the natural numbers below 10 that are multiples of 3 or 5, we get 3, 5, 6 and 9. The sum of these multiples is 23.Find the sum of all the multiples of 3 or 5 below 1000.
訳すとこんな感じ。
10未満の自然数のうち、3 もしくは 5 の倍数になっているものは 3, 5, 6, 9 の4つがあり、 これらの合計は 23 になる。
同じようにして、1,000 未満の 3 か 5 の倍数になっている数字の合計を求めよ。
解くために作ったプログラム
Scala
val ret = (0 to 999).filter(n =>{n % 5 == 0 || n % 3 == 0}).sum
println(ret)
Kotlin
Scalaと全く同じになるかなと思ったけど、sum関数がなかったので自作してみてます。package p1
import java.util.Collection
fun Collection<Int<.sum():Int {
var ret = 0
for (item in this) {
ret += item
}
return ret
}
fun main(args : Array<String>) {
val result = (1..999).filter {it % 3 == 0 || it % 5 == 0}.sum()
println("result = ${result}")
}
Java
いたって普通のコード。package p1;
public class P1 {
public static void main(String[] args) {
int ret = 0;
for (int i = 1; i <= 999; i++) {
if (i % 3 ==0 || i % 5 == 0) {
ret += i;
}
}
System.out.println("ret = " + ret);
}
}
javascript
とりあえず結果はあってる。 var Num = function(s, e) {
this.filter = function(func) {
var arr = new Array();
for (i = s; i <= e; i++) {
if (func(i)) arr.push(i);
}
arr.sum = function() {
var sum = 0;
for (i = 0; i < this.length; i++) {
sum += this[i];
}
return sum;
};
return arr;
}
};
var ret = new Num(1, 999).filter(function(val) {
return val % 3 == 0 || val % 5 == 0;
}).sum();
document.write(ret);
groovy
def sum = (1..999).grep({it % 3 == 0 || it % 5 == 0}).sum()
println "sum = $sum"