syndicats de manutention, des sous-ensembles et surensembles à Scala
-
11-09-2019 - |
Question
Je dois écrire un extrait de code qui comparerait plusieurs tableaux et de produire l'ensemble qui correspondent aux données contenues dans ces tableaux, produire l'ensemble de données que dans le tableau A, mais pas dans le tableau B, C, D, dans le tableau B, mais pas A, C, D, être capable de gérer un certain nombre de matrices (par exemple en boucle dynamique). Le code doit utiliser des fonctions anonymes à Scala (à savoir pas comme un réseau régulier en boucle comme en Java).
La solution
Sons comme les devoirs à moi. De loin la meilleure façon de faire est plus facile de jeter le contenu du tableau A dans un Set
et utiliser l'opération de suppression. Ce serait O (n) où n = \ somme {| A |, | B |, | C |, ...}. La solution suivante fonctionne pour Iterable
arbitraire, non 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
}