मैंने इस स्काला फ़ंक्शन को सभी परिणामों को उत्सुकता से पुनर्प्राप्त करने के बजाय आलसी स्ट्रीम वापस करने और सभी परिणामों के मौजूद होने पर उन्हें सेक से स्ट्रीम में बदलने के बजाय आलसी स्ट्रीम को वापस करने की कोशिश की है। मुझे लगता है कि यह समस्या में है (के लिए (i < - 1 से 9; z < - हल करें (xs.updated (pos, i), pos)) उपज z) toStream।स्ट्रीम आउटपुट में फॉर-लूप सेक आउटपुट को फिर से लिखना कैसे करें?
किसी भी सलाह की सराहना की जाती है। एक और समाधान जो मैं देख रहा हूं वह परिणाम मिलने पर परिणाम लौटा देना है। इस समाधान के साथ शायद मेरे पास केवल 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
}