fork download
  1. subsequencesOfSize :: Int -> [a] -> [[a]]
  2. subsequencesOfSize n xs | n > length xs = []
  3. subsequencesOfSize n xs = subsequencesBySize xs !! n where
  4. subsequencesBySize [] = [[[]]]
  5. subsequencesBySize (x:xs) = zipWith (++) ([] : map (map (x:)) next) (next ++ [[]])
  6. where next = subsequencesBySize xs
  7.  
  8. main = do
  9. print $ length $ subsequencesOfSize 3 [1..350]
  10. print $ length $ subsequencesOfSize 147 [1..150]
Success #stdin #stdout 2.2s 9336KB
stdin
Standard input is empty
stdout
7084700
551300