2016-08-11 5 views
1

Ich habe eine Liste von Sets (Scala) und möchte alle Supersätze entfernen. Z.B.Finden Sie geschlossene Sätze in einer Liste

List(Set(1,2,3), Set(1,2), Set(2,1), Set(5,6), Set(5)) 

Ich möchte die folgende Liste

List(Set(1,2), Set(5)) 

ich die folgende Funktion geschrieben bekommen - nicht sicher, wie robust es ist:

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) 
} 
+2

Also, was ist Ihre Frage? Wenn Sie möchten, dass Ihr Code überprüft wird, ist codereview.stackexchange.com ein besserer Ort dafür. –

Antwort

0

Betrachten filter mit als

folgt
mySets.distinct.filter(s => mySets.forall(x => !x.subsetOf(s) || s == x)) 
+0

'x => x == s || x! = (x & s) ' – charlie

Verwandte Themen