Pergunta

Eu preciso escrever um trecho de código que comparar várias matrizes e produzir o conjunto que coincide com os dados nessas matrizes, produzir o conjunto de dados apenas em conjunto A, mas não no conjunto B, C, D, em conjunto B, mas não em a, C, D, sendo capaz de lidar com qualquer número de matrizes (isto é enrolada de forma dinâmica). O código deve utilizar funções anônimas em Scala (ou seja, não como uma matriz regular looping como em Java).

Foi útil?

Solução

soa como lição de casa para me. De longe a maneira mais fácil de fazer isso é jogar o conteúdo do array A em um Set e usar a operação de remoção. Isso seria O (n) , onde n = \ sum {| A |, | B |, | C |, ...}. A solução a seguir funciona para Iterable arbitrária, não apenas 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top