我一直在研究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

10-06 12:14