Обработка объединений, подмножеств и надмножеств в Scala

StackOverflow https://stackoverflow.com/questions/954451

Вопрос

Мне нужно написать фрагмент кода, который будет сравнивать несколько массивов и создавать набор, соответствующий данным в этих массивах, создавать набор данных только в массиве A, но не в массиве B, C, D, в массиве B, но не в A. ,C,D, способные обрабатывать любое количество массивов (т.е.динамически зацикленный).Код должен использовать анонимные функции в Scala (т.не похоже на обычный цикл массива, как в Java).

Это было полезно?

Решение

Для меня это звучит как домашнее задание.Самый простой способ сделать это — поместить содержимое массива A в Set и используйте операцию удаления.Это было бы На) где н = \sum { |A|, |B|, |C|, ...}.Следующее решение работает для произвольных Iterable, не просто 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
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top