没有重复的幂集
Powerset Without Duplicates
我需要在 haskell 中创建一个幂集函数,它接受一个集合并输出没有重复条目的幂集,而不管输入列表中放了什么。例如:[1,1] 应该 return [[],[1]]
powerset [] = [[]]
powerset (x:xs) = union((powerset xs)) (map (x:) (powerset xs))
其中 union 是一个先前定义的函数,它连接两个没有重复的集合。上面代码的问题在于它将重复项计为原始条目,因此输入 [1,1] returns [[],[1],[1],[1,1]].
有什么想法吗?在触发 powerset 之前,我考虑过将 union 与输入列表和空列表结合使用来清除重复项,但我不确定那会是什么样子。
从给定列表中删除所有重复项(您可以使用 nub
函数)。
运行你现在使用的算法
我需要在 haskell 中创建一个幂集函数,它接受一个集合并输出没有重复条目的幂集,而不管输入列表中放了什么。例如:[1,1] 应该 return [[],[1]]
powerset [] = [[]]
powerset (x:xs) = union((powerset xs)) (map (x:) (powerset xs))
其中 union 是一个先前定义的函数,它连接两个没有重复的集合。上面代码的问题在于它将重复项计为原始条目,因此输入 [1,1] returns [[],[1],[1],[1,1]].
有什么想法吗?在触发 powerset 之前,我考虑过将 union 与输入列表和空列表结合使用来清除重复项,但我不确定那会是什么样子。
从给定列表中删除所有重复项(您可以使用
nub
函数)。运行你现在使用的算法