4
Rosetta CodeのScalaのHofstadter-Conway $10,000 sequenceタスクを試してみました。私は可能な限り慣用的なScalaとして使用したいですが、私は、通常は最後の手段として使用する未処理の再帰を使わずにアルゴリズムを実装するのに問題があります。ここに私が現在持っているものがあります:生の再帰を使わないHofstadter-Conwayアルゴリズムの実装
object HofstadterConway {
def makeHCSequence(max: Int): Seq[Int] = {
def hc(v: Vector[Int], idx: Int): Vector[Int] = {
if (idx == (max + 1)) {
v.tail
} else if (idx <= 2) {
hc(v :+ 1, idx + 1)
} else {
hc (v :+ (v(v(idx - 1)) + v(idx - v(idx - 1))), idx + 1)
}
}
hc(Vector(), 0)
}
}
もっと慣用的にこれを行う方法はありますか?
気にしないでください。私はそれを考え出した。私が必要としたのは折り畳みだった。なぜ私は最初にそれが起こらなかったのか分かりません。 –
あなたのソリューションを投稿できますか? – Christian
誰かがここにScalaソリューションを書いています:http://rosettacode.org/wiki/Hofstadter-Conway_%2410000_sequence – axel22