我一直在研究Euler problem 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);
最佳答案
在Scala中这很简单:
"0123456789".permutations.drop(999999).next