获取具有特定第一元素的排列

时间:2015-05-23 01:40:38

标签: haskell permutation

如何在Haskell中获得条件排列?

这是我的代码:

perm :: [Int] -> [[Int]]
perm [] = [[]]
perm xs = [ x:ps | x <- xs , ps <- perm ( xs\\[x] ) ]

但我希望得到所有以1开头的排列。当我执行时:

perm [1,2,3]

我想得到这个:

[[1,2,3],[1,3,2]]

我想在函数中添加一些条件&#34; perm&#34;允许我在进行排列时这样做,我不想做过滤,因为我不想计算所有的排列。

1 个答案:

答案 0 :(得分:3)

[1, 2, 3]开头的1的排列只是[2, 3]的排列,1添加到前面,您可以使用

计算
map (1:) . perm $ [2, 3]