저번에 파이썬으로 짠거 하스켈로 다시 짬






import Data.List combinations k ns = filter ((k==).length) $ subsequences ns psp ns = [ x | k <- [1..length ns], x <- combinations (k-1) ns ] part a k s | k == 1 = [s++[a]] | otherwise = [x | r <- psp a', x <- part (a'\\r) (k-1) (s++[[m]++r])] where a' = tail a m = minimum a main = do mapM print (part [0..6] 3 []) print (length (part [0..6] 3 []))








mapM이나 combinations 같은건 내 레벨이 아닌거 같아서 복붙함

99 questions/Solutions/26 - HaskellWiki


[[0],[1],[2,3,4,5,6]]

[[0],[1,2],[3,4,5,6]]

[[0],[1,3],[2,4,5,6]]

[[0],[1,4],[2,3,5,6]]

[[0],[1,5],[2,3,4,6]]

...

[[0,1,3,5,6],[2],[4]]

[[0,2,3,5,6],[1],[4]]

[[0,1,4,5,6],[2],[3]]

[[0,2,4,5,6],[1],[3]]

[[0,3,4,5,6],[1],[2]]

301