मैंने किसी दिए गए सूची के लिए क्रमपरिवर्तन की गणना करने के लिए एक फ़ंक्शन को कोड किया, लेकिन मुझे समझ में नहीं आ रहा है कि यह क्रमपरिवर्तन के बजाय लगातार खाली सूची क्यों लौटाता है। क्या आप मुझे समझने में मदद कर सकते हैं?

def permutations(l: List[Any]): List[List[Any]] = l match {
  case Nil => Nil
  case head :: tail => for {
    element <- l
    permutationOfRest <- permutations(l.filter( x => x != element))
  } yield  element :: permutationOfRest
}
0
ilmirons 27 जुलाई 2016, 11:22

1 उत्तर

सबसे बढ़िया उत्तर

समस्या पहले case के साथ है। जब इनपुट सूची खाली होती है, तो आप एक खाली सूची या क्रमपरिवर्तन लौटाते हैं। इसके बजाय, आपको बिना किसी क्रमपरिवर्तन वाली सूची वापस करनी चाहिए:

case Nil => List(Nil)
2
Sergii Lagutin 27 जुलाई 2016, 11:37
आपका बहुत बहुत धन्यवाद। मैं अक्सर मानचित्र और फ़्लैटमैप को लेकर भ्रमित हो जाता हूँ
 – 
ilmirons
27 जुलाई 2016, 11:46