如何在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;允许我在进行排列时这样做,我不想做过滤,因为我不想计算所有的排列。
答案 0 :(得分:3)
以[1, 2, 3]
开头的1
的排列只是[2, 3]
的排列,1
添加到前面,您可以使用
map (1:) . perm $ [2, 3]