>>902 [1..8]は流石にtoo large
haskell
import Data.List
parts [] = [ [ ] ]
parts [x] = [ [ [x] ] ]
parts ( x : xs ) = [ (x : ys) : zs |
ys <- subsequences xs,
zs <- parts $ xs \ ys ]
main = do
print $ parts [2,3]
print $ parts [1,2,3]
print $ length $ parts [1..8]
----
[[[2],[3]],[[2,3]]]
[[[1],[2],[3]],[[1],[2,3]],[[1,2],[3]],[[1,3],[2]],[[1,2,3]]]
4140