I'm trying to learn some Scala and decided to try to tackle some Project Euler problems. For problem #48, coming from a Python background, my solution is the following one-liner:print ( (1 to 1000).map(i => BigInt(i).pow(i)).sum % BigInt(10).pow(10) )Is this idiomatic? Is there a simpler/more readable solution?
Solving Project Euler problem #48 in Scala
scala;project euler
Your solution is clean but doesn't scale well. A well known optimization for a^k mod m is to perform all computations modulus m. If m is sufficiently small, we furthermore can switch to native types (this is not the case here !).val n = 1000val m = BigInt(10).pow(10)(for (i <- 1 to n) yield BigInt(i).modPow(i,m)).sum % mRounded avarage timing results (Scala 2.9.1 with -optimize) :n                     1000     | 10000Initial solution       4.8 ms  |  6700 msFold left              4.8 ms  |  6700 msMy humble version      0.5 ms  |     5 ms