मैं 2 सूचियों के साथ उपसमूहों के सभी संभावित संयोजन बनाना चाहता हूं।सूची की अनुमतियां - हास्केल
["aa","ab","ac","ba","bb","bc","ca","cb","cc"]
एक ही विधि का एक सरल संशोधन लौट सकते हैं 3 सूचियों का संयोजन:
getCombinations :: [a] -> [[a]]
getCombinations na = do
a <- na
b <- na
[[a,b]]
आप इस समारोह के लिए "abc" पार कर लेते हैं, यह इस रिटर्न: यहां एक समारोह है कि सिर्फ इस करता है दो के बजाय।
getCombinations :: [a] -> [[a]]
getCombinations na = do
a <- na
b <- na
c <- na
[[a,b,c]]
एक तर्क के रूप "abc" पास करने का परिणाम:
["aaa","aab","aac","aba","abb","abc","aca","acb","acc",
"baa","bab","bac","bba","bbb","bbc","bca","bcb","bcc",
"caa","cab","cac","cba","cbb","cbc","cca","ccb","ccc"]
सबसे आसान तरीका यह सूचियों का एक मनमाना संख्या के पैमाने पर बनाने के लिए क्या है? के रूप में सरल रूप में किया जाता है
replicateM :: Int -> m a -> m [a]
परिभाषा: सूची पर
replicateM n = sequence . replicate n
तो यह sequence
है
getCombinations :: Int -> [a] -> [[a]]
आप हमेशा hoogle का उपयोग करने का प्रयास कर सकते हैं: http://www.haskell.org/hoogle/?hoogle=Int+-%3E+[a]+-%3E+[[a]], यह तीसरे परिणाम के रूप में प्रतिकृति एम देता है। – sdcvvc
धन्यवाद sdcvvc, मुझे नहीं पता था कि होगल की क्वेरी करना संभव था! – RooSoft
तकनीकी रूप से, ये [क्रमपरिवर्तन] (https://en.wikipedia.org/wiki/Permutation) नहीं [संयोजन] (https://en.wikipedia.org/wiki/Combination) हैं। गणितज्ञ पैडेंटिक होंगे ... –