PerchéScala per le prestazioni di comprensione
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
più lento:
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
Se ho capito correggere questo dovrebbe essere lo stesso?
soluzione dopo le risposte di lavorazione:
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
È davvero utile scrivere almeno la versione di Scala che hai usato. Al massimo il tuo sistema operativo e altre informazioni correlate. –
Sto usando Windows 7 e versione 2.9.2 usando eclipse con jre7. – Jeff
Strano modo di cercare soluzioni - tu hai bisogno di 'a + b + c == 1000' quindi perché non impostare semplicemente' c = 1000 - a - b'? (Ovviamente questa non è una risposta alla domanda ....) –