- 56 名前:46 mailto:sage [2012/03/21(水) 23:06:26.29 ]
- 自分で作ったのは、こんな感じ
tails' :: [a] -> [[a]] tails' [] = [] tails' [x] = [[x]] tails' xs = xs : tails' (tail xs) comb1 :: [a] -> [[a]] comb1 xs = map (:[]) xs combN', combN :: ([a] -> [[a]]) -> [a] -> [[a]] combN' f (x:xs) = map (x:) (f xs) combN f xs = concatMap (combN' f) (tails' xs) comb :: [a] -> Int -> [[a]] comb xs n = (iterate combN comb1 !! (n-1)) xs 使用例 comb [1,2,3,4,5] 3 ==> [ [1,2,3], [1,2,4], [1,2,5], [1,3,4], [1,3,5] , [1,4,5], [2,3,4], [2,3,5], [2,4,5], [3,4,5] ] n重ループを分解した感じ 自分で書いたコードだが、なんか自分でムカツク
|

|