2つのリストを持つすべてのサブグループの組み合わせを作りたいと思っています。リストの順列 - Haskell
getCombinations :: [a] -> [[a]]
getCombinations na = do
a <- na
b <- na
[[a,b]]
あなたはこの関数に「ABC」を渡すと、それはこれを返します:同じ方法の
["aa","ab","ac","ba","bb","bc","ca","cb","cc"]
簡単な修正は3つのリストの組み合わせを返すことができますここでこれだけ行う関数であります2つの代わりに。引数として「ABC」を渡すの
getCombinations :: [a] -> [[a]]
getCombinations na = do
a <- na
b <- na
c <- na
[[a,b,c]]
結果:
["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"]
それはリストの任意の数に拡張させるための最も簡単な方法は何ですか?ここでは型宣言がどのように見えるかです:あなたが欲しい
getCombinations :: Int -> [a] -> [[a]]
あなたはいつでもgoogleを使ってみることができます:http://www.haskell.org/hoogle/?hoogle=Int+-%3E+[a]+-%3E+[[a]]、それはreplicateMを3番目の結果として与えます。 – sdcvvc
ありがとうございましたsdcvvc、私はそれが好きなように検索することが可能だったことを知らなかった! – RooSoft
技術的には、[Permutations](https://en.wikipedia.org/wiki/Permutation)NOT [Combinations](https://en.wikipedia.org/wiki/Combination)です。数学者は賢い人です... –