DlaczegoScala za wykonanie zrozumieniem
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
wolniej następnie:
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
Jeśli rozumiem rozwiązać ten powinien być taki sam?
Rozwiązanie po odpowiedziach przetwarzania:
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
Naprawdę przydatne jest napisanie przynajmniej wersji Scala, której używałeś. Co najwyżej system operacyjny i inne powiązane informacje. –
Używam Windows 7 i wersji 2.9.2 używając eclipse z jre7. – Jeff
Dziwny sposób na poszukiwanie rozwiązań - potrzebujesz 'a + b + c == 1000', więc dlaczego nie ustawić po prostu' c = 1000 - a - b'? (Oczywiście nie jest to odpowiedź na pytanie ...) –