【发布时间】:2012-01-27 14:39:25
【问题描述】:
我是 Haskell 的新手。我必须编写函数来获取整数列表并返回接收身份排列所需的组合数。类似的东西:
permutationOrder :: [Int] -> Int
如果有任何帮助,我将不胜感激。
【问题讨论】:
标签: list math haskell permutation
我是 Haskell 的新手。我必须编写函数来获取整数列表并返回接收身份排列所需的组合数。类似的东西:
permutationOrder :: [Int] -> Int
如果有任何帮助,我将不胜感激。
【问题讨论】:
标签: list math haskell permutation
假设列表包含从0到n-1的数字,以某种顺序,
toPermutationGraph :: [Int] -> [(Int,Int)]
toPermutationGraph = zip [0 .. ]
为您提供排列图。从图中,您可以通过将其划分为连接的组件(对应于排列组成的循环)来轻松计算顺序。循环的顺序是循环中元素的数量。不相交循环通勤,这使得计算不相交循环乘积的顺序变得容易。
【讨论】:
pick :: (a -> Bool) -> [a] -> Maybe (a, [a]),它返回满足测试的第一个列表元素和列表的其余部分的对,如pick even [1,3,4,5,6] = Just (4,[1,3,5,6]),从第一个找到循环元素。迭代为您提供所有循环的列表。