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).

¿Fue útil?

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
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top