Warum istScala für das Verständnis Leistung
for (
a <- 1 to 1000;
b <- 1 to 1000 - a;
c <- 1 to 1000 - a - b;
if (a * a + b * b == c * c && a + b + c == 1000)
) println((a, b, c, a * b * c))
266 ms
langsamer dann:
for (a <- 1 to 1000)
for (b <- 1 to 1000 - a)
for (c <- 1 to 1000 - a - b)
if (a * a + b * b == c * c)
if (a + b + c == 1000)
println((a, b, c, a * b * c))
62 ms
Wenn ich richtig verstehe dies das gleiche sein sollte?
Lösung nach der Verarbeitung Antworten:
for (
a <- 1 to 1000;
b <- 1 to (1000 - a)
) {
val c = (1000 - a - b)
if (a * a + b * b == c * c)
println((a, b, c, a * b * c))
}
9 ms
Es ist wirklich nützlich, mindestens Scala-Version zu schreiben, die Sie verwendeten. Höchstens Ihr Betriebssystem und andere damit zusammenhängende Informationen. –
Ich benutze ein Windows 7 und Version 2.9.2 mit Eclipse mit jre7. – Jeff
Seltsame Art, nach Lösungen zu suchen - Sie benötigen 'a + b + c == 1000' also warum nicht einfach' c = 1000 - a - b' einstellen? (Offensichtlich ist dies keine Antwort auf die Frage ....) –