2005年09月17日
順列を内包表記で in Haskell
書くとこうなる
perm [] = [] perm [a] = [[a]] perm (x:xs) = [ take i y ++ (x:drop i y) | y <- perm xs, i <- [1..length xs]]
ちなみに,y と i の生成順を逆にすると遅くなる.内側が先に確定して外側に行くので.
- Comments: 0
- TrackBack (Close): -
書くとこうなる
perm [] = [] perm [a] = [[a]] perm (x:xs) = [ take i y ++ (x:drop i y) | y <- perm xs, i <- [1..length xs]]
ちなみに,y と i の生成順を逆にすると遅くなる.内側が先に確定して外側に行くので.