Manejo de los sindicatos, los subconjuntos y superseries en Scala
-
11-09-2019 - |
Pregunta
Tengo que escribir un fragmento de código que comparar varias matrices y producir el conjunto que coincidan con los datos de esas matrices, producir el conjunto de datos sólo en la matriz A, pero no en serie B, C, D, en conjunto B, pero no en a, C, D, siendo capaz de manejar cualquier número de matrices (es decir, un bucle de forma dinámica). El código debe utilizar funciones anónimas en Scala (es decir, no como un conjunto regular de bucle como en Java).
Solución
Suena como tarea para mí. Con mucho, la forma más fácil de hacer esto es tirar el contenido de la matriz A en un Set
y utilizar la operación de eliminación. Esto sería O (n) en n = \ sum {| A |, | B |, | C |, ...}. La siguiente solución funciona para Iterable
arbitraria, no sólo 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
}