在列表中查找闭集
find closed sets in a list
我有一个集合列表 (Scala) 并且想删除所有超集。例如
List(Set(1,2,3), Set(1,2), Set(2,1), Set(5,6), Set(5))
我想得到以下列表
List(Set(1,2), Set(5))
我写了以下函数 - 不确定它有多健壮:
def findClosedSets (array: Array[Set[Int]]) : Array[Set[Int]] = {
val arrayRight = array.distinct
val arrayLeft = arrayRight
arrayLeft.filter(j => arrayRight.filter(i => i.subsetOf(j)).length==1)
}
考虑使用 filter
如下
mySets.distinct.filter(s => mySets.forall(x => !x.subsetOf(s) || s == x))
我有一个集合列表 (Scala) 并且想删除所有超集。例如
List(Set(1,2,3), Set(1,2), Set(2,1), Set(5,6), Set(5))
我想得到以下列表
List(Set(1,2), Set(5))
我写了以下函数 - 不确定它有多健壮:
def findClosedSets (array: Array[Set[Int]]) : Array[Set[Int]] = {
val arrayRight = array.distinct
val arrayLeft = arrayRight
arrayLeft.filter(j => arrayRight.filter(i => i.subsetOf(j)).length==1)
}
考虑使用 filter
如下
mySets.distinct.filter(s => mySets.forall(x => !x.subsetOf(s) || s == x))