Domanda

Ho bisogno di scrivere un frammento di codice che confronta array multipli e produrre il set che corrisponde ai dati in tali matrici, produrre i dati impostati solo in array A, ma non nella matrice B, C, D, nella matrice B ma non in a, C, D, essendo in grado di gestire qualsiasi numero di array (cioè dinamicamente loop). Il codice dovrebbe utilizzare funzioni anonime a Scala (vale a dire non come una serie regolare loop come in Java).

È stato utile?

Soluzione

Suona come compiti a casa per me. Di gran lunga il modo più semplice per farlo è quello di gettare il contenuto della serie A in un Set e utilizzare l'operazione di rimozione. Questo sarebbe O (n) , dove n = \ sum {| A |, | B |, | C |, ...}. La seguente soluzione funziona per Iterable arbitraria, non solo 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
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top