haskellでpermutationを作ってみる
正確には順列じゃなくて nPmのn=mのときだけ。
import List main=print $ permutation [1..3] permutation (a:[]) = [[a]] permutation a = concat $ zipWith (\x y->map (x:) (permutation (delete x y))) a $ repeat a
結果
*Main> main [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
数列表記版
import List main=print $ permutation [1..3] permutation [] = [[]] permutation xs = concat [map (x:) (permutation (delete x xs))|x<-xs]