1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | object Main { def main(args: Array[String]) { println("Euler Question #1: Add all the natural numbers below one thousand that are multiples of 3 or 5.") var start = System.currentTimeMillis() val answer1 = (1 until 1000).foldLeft(0){(total, x) => x match { case i if (i % 3 == 0 || i % 5 ==0) => i + total case _ => total } } var end = System.currentTimeMillis() println("Answer: " + answer1) println("Time: " + (end - start) + "ms") println("Trying it another way, using a pattern match instead of filter...") start = System.currentTimeMillis() val answer2 = (1 until 1000).filter(i => (i % 3 == 0 || i % 5 == 0)).foldLeft(0)(_ + _) end = System.currentTimeMillis() println("The other way gets the right answer: " + answer2) println("but get the answer much faster: " + (end - start) + "ms") } } |
b2JqZWN0IE1haW4gewogIGRlZiBtYWluKGFyZ3M6IEFycmF5W1N0cmluZ10pIHsKCQlwcmludGxuKCJFdWxlciBRdWVzdGlvbiAjMTogQWRkIGFsbCB0aGUgbmF0dXJhbCBudW1iZXJzIGJlbG93IG9uZSB0aG91c2FuZCB0aGF0IGFyZSBtdWx0aXBsZXMgb2YgMyBvciA1LiIpCgkJdmFyIHN0YXJ0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkKCQl2YWwgYW5zd2VyMSA9ICgxIHVudGlsIDEwMDApLmZvbGRMZWZ0KDApeyh0b3RhbCwgeCkgPT4gCgkJICB4IG1hdGNoIHsKCQkgICAgY2FzZSBpIGlmIChpICUgMyA9PSAwIHx8IGkgJSA1ID09MCkgPT4gaSArIHRvdGFsCgkJICAgIGNhc2UgXyA9PiB0b3RhbAoJCSAgfQoJCX0KCQl2YXIgZW5kID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkKCQlwcmludGxuKCJBbnN3ZXI6ICIgKyBhbnN3ZXIxKQoJCXByaW50bG4oIlRpbWU6ICIgKyAoZW5kIC0gc3RhcnQpICsgIm1zIikKCgkJcHJpbnRsbigiVHJ5aW5nIGl0IGFub3RoZXIgd2F5LCB1c2luZyBhIHBhdHRlcm4gbWF0Y2ggaW5zdGVhZCBvZiBmaWx0ZXIuLi4iKQoJCXN0YXJ0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkKCQl2YWwgYW5zd2VyMiA9ICgxIHVudGlsIDEwMDApLmZpbHRlcihpID0+IChpICUgMyA9PSAwIHx8IGkgJSA1ID09IDApKS5mb2xkTGVmdCgwKShfICsgXykKCQllbmQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKQoJCXByaW50bG4oIlRoZSBvdGhlciB3YXkgZ2V0cyB0aGUgcmlnaHQgYW5zd2VyOiAiICsgYW5zd2VyMikKCQlwcmludGxuKCJidXQgZ2V0IHRoZSBhbnN3ZXIgbXVjaCBmYXN0ZXI6ICIgKyAoZW5kIC0gc3RhcnQpICsgIm1zIikKICB9Cn0=
-
upload with new input
-
result: Success time: 0.18s memory: 212480 kB returned value: 0
Euler Question #1: Add all the natural numbers below one thousand that are multiples of 3 or 5. Answer: 233168 Time: 118ms Trying it another way, using a pattern match instead of filter... The other way gets the right answer: 233168 but get the answer much faster: 11ms


