【发布时间】:2013-04-04 10:59:06
【问题描述】:
我尝试将此 Scala 函数转换为返回惰性流,而不是急切地检索所有结果,并在所有结果都存在时将它们从 Seq 转换为 Stream。我觉得问题在于 (for (i 。
感谢任何建议。我正在寻找的另一个解决方案是在找到结果时返回结果。使用此解决方案,我可能只返回 1 个结果。谢谢
isConflictAt(xs.updated(pos, 0), pos, xs(pos)是一个约束检查函数。
def solve(xs : List[Int], pos: Int): Stream[List[Int]] = {
if (!isConflictAt(xs.updated(pos, 0), pos, xs(pos))) {
val pos = xs.indexOf(0)
if (pos < 0) {println(xs); Stream(xs) } else (for (i <- 1 to 9; z <- solve(xs.updated(pos, i), pos)) yield z) toStream
} else Stream.empty
}
【问题讨论】: