List all possible 4 chooses from 9 in Haskell

前端 未结 4 2035
温柔的废话
温柔的废话 2021-01-14 10:59

I\'m not able to find an effective way to pick out all permutations of 4 elements from a list of 9 elements in Haskell. The python-way to do the same thing:

         


        
4条回答
  •  甜味超标
    2021-01-14 11:31

    How about this

    import Data.List (delete)
    
    perms :: (Eq a) => Int -> [a] -> [[a]]
    perms 0 _  = [[]]
    perms _ [] = [[]]
    perms n xs = [ (x:ys) | x <- xs, ys <- perms (n-1) (delete x xs) ]
    

    Basically, it says, a permutation of n elements from a set is, pick any element as the first element of the result, then the rest is a permutation of n-1 elements from the rest of the set. Plus some base cases. Assumes that elements in the list are unique.

提交回复
热议问题