Je dois écrire un fragment de code qui comparerait plusieurs tableaux et produirait l'ensemble correspondant aux données de ces tableaux, ne produirait l'ensemble de données que dans le tableau A, mais pas dans le tableau B, C, D, dans le tableau B mais pas dans A, C, D, étant capable de gérer n'importe quel nombre de tableaux (c'est-à-dire dynamiquement en boucle). Le code devrait utiliser des fonctions anonymes dans Scala (c'est-à-dire ne pas ressembler à un tableau régulier en boucle comme dans Java).Gestion des unions, sous-ensembles et surensembles dans Scala
1
A
Répondre
2
Cela me ressemble. De loin, la façon la plus simple de le faire est de lancer le contenu du tableau A dans un Set
et d'utiliser l'opération de suppression. Ce serait O (n) où n = \ somme {| A |, | B |, | C |, ...}. La solution suivante fonctionne pour arbitraire Iterable
, pas seulement Array
:
def compareArrays[A](arrs: List[Iterable[A]]) = arrs match {
case a :: tail => {
val set = a.foldLeft(Set[A]()) { _ + _ }
tail.foldLeft(set) { _ -- _ }
}
case Nil => Nil
}