Обработка объединений, подмножеств и надмножеств в Scala
-
11-09-2019 - |
Вопрос
Мне нужно написать фрагмент кода, который будет сравнивать несколько массивов и создавать набор, соответствующий данным в этих массивах, создавать набор данных только в массиве 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
}
Не связан с StackOverflow