gpt4 book ai didi

list - haskell中的排列

转载 作者:行者123 更新时间:2023-12-01 06:14:23 25 4
gpt4 key购买 nike

我有一个列表:

let a = [1, 2, 3]

我需要得到另一个列表:

[1, 2, 3] ++ [1*2, 2*3, 1*3] ++ [1*2*3]

它是列表元素所有可能的唯一组合的产物。我在 Data.List 中建立了排列,但在我看来它有些不同。

是否有任何库函数可以获取此列表,或者您能否给我一些示例,我该如何创建自己的函数。

谢谢。

最佳答案

对于库函数,您可以使用 Data.List 中的 subsequences:

Prelude Data.List> subsequences [1,2,3]
[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]

您可以使用 map product $ subsequences [1,2,3] 获取所有产品。

但这与您指定的顺序不同。所以你可以排序,使用 Data.List 中的 sortByData.Ord 中的comparing:

Prelude Data.List Data.Ord> sortBy (comparing length) $ subsequences [1,2,3]
[[],[1],[2],[3],[1,2],[1,3],[2,3],[1,2,3]]

同样,使用map product获取产品。

您的另一个想法是,自己编写一个函数,如果你正在学习 Haskell,这是最好的主意。试试吧!

关于list - haskell中的排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4358897/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com