まずは、問題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"