Dra*_*mes 3 functional-programming scala permutation
我一直在研究Project Euler 问题24并且遇到了Scala的解决方案(无论如何我试图解决它的语言).我原本打算自己做,但现在我发现这个解决方案是如何工作的.
问题:
字典排列0,1和2是:
012,021,102,120,201和210.
数字0,1,2,3,4,5,6,7,8和9的百万次词典排列是多少?
解决方案:
def permutations(s : String) : Seq[String] =
{
if(s.size == 1)
Seq(s);
else
s.flatMap(x => permutations(s.filterNot(_ == x)).map(x +));
}
val ans = permutations("0123456789")(1000000 - 1).toLong;
println(ans);
Run Code Online (Sandbox Code Playgroud)
这在Scala中是微不足道的:
"0123456789".permutations.drop(999999).next
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
575 次 |
| 最近记录: |