inter :: a -> [[a]] -> [[[a]]]
inter x = go
where
go [] = []
go (y:ys) = ((x:y):ys) : map (y:) (go ys)
part :: Int -> [a] ->[[[a]]]
part _ [] = []
part 1 xs = [[xs]]
part k (x:xs) = map ([x]:) prev_ks ++ concatMap (inter x) ks
where
prev_ks = part (k-1) xs
ks = part k xs
main = print $ part 3 [1..4]
関数型プログラミング言語Haskell Part30 [無断転載禁止]©2ch.net
レス数が950を超えています。1000を超えると書き込みができなくなります。
995デフォルトの名無しさん
2017/09/26(火) 10:46:10.91ID:cHfS1yYIレス数が950を超えています。1000を超えると書き込みができなくなります。
