相关疑难解决方法(0)

根据长度过滤子集?

尝试使用过滤器提取长度为k的子集。不确定如何处理?该列表包含100个元素

subsets :: [a] -> [[a]]
subsets [] = [[]]
subsets (x:xs) = [zs | ys <- subsets xs, zs <- [ys, (x:ys)]]
Run Code Online (Sandbox Code Playgroud)

如果我使用过滤器,这就是我的想法:

filter (length(3)) subsets [1,2,3,4,5]
Run Code Online (Sandbox Code Playgroud)

但是我可能错了。如果有其他方法而不是过滤器?我是Haskell的新手,所以不确定。

lambda haskell list function-call pointfree

7
推荐指数
1
解决办法
230
查看次数

列表性能的长度为n的子序列

我实现了这个答案的一个版本/sf/answers/694429781/(我不知道回答的人的意图是什么)

sublistofsize 0 _        = [[]]
sublistofsize _ []       = []
sublistofsize n (x : xs) = sublistsThatStartWithX ++ sublistsThatDontStartWithX
  where sublistsThatStartWithX = map (x:) $ sublistofsize (n-1) xs
        sublistsThatDontStartWithX = sublistofsize n xs
Run Code Online (Sandbox Code Playgroud)

我不确定的是什么 sublistsThatStartWithX = map (x:) $ sublistofsize (n-1) xs

我假设map(x :)在性能方面提出了问题,但不确定如何解决它.我做过剖析print $ length $ sublistofsize 5 $ primesToTakeFrom 50

COST CENTRE                                  MODULE                                        no.     entries  %time %alloc   %time %alloc
sublistofsize                             Main                                          112     4739871   46.9   39.9    96.9  100.0
 sublistofsize.sublistsThatDontStartWithX Main                                          124     2369935    2.2    0.0     2.2 …
Run Code Online (Sandbox Code Playgroud)

performance haskell

4
推荐指数
1
解决办法
3785
查看次数

用于在Haskell中生成列表的唯一组合的函数

是否有一个Haskell函数可以从列表中生成给定长度的所有唯一组合?

Source = [1,2,3]

uniqueCombos 2 Source = [[1,2],[1,3],[2,3]]
Run Code Online (Sandbox Code Playgroud)

我试过寻找Hoogle,但找不到具体做到这一点的功能.排列不会产生预期的结果.

以前有人用过类似的功能吗?

combinations haskell combinatorics

0
推荐指数
2
解决办法
808
查看次数