União e interseção de listas

Crie uma função que receba dois arrays não vazios de números inteiros e retorne dois arrays nesta ordem:

  1. A interseção: valores presentes em ambas as entradas.
  2. A união: valores presentes em uma das entradas ou em ambas.

Os arrays de entrada podem conter valores duplicados. Remova os valores duplicados de ambos os arrays retornados e ordene cada um em ordem crescente.

Array 1: [5, 6, 6, 6, 8, 9]
Array 2: [3, 3, 4, 4, 5, 5, 8]

Intersection: [5, 8]
// 5 e 8 são os únicos valores presentes em ambos os arrays.

Union: [3, 4, 5, 6, 8, 9]
// Cada valor aparece em pelo menos um dos arrays.

Exemplos

intersection_union([1, 2, 3, 4, 4], [4, 5, 9]) ➞ [[4], [1, 2, 3, 4, 5, 9]]

intersection_union([1, 2, 3], [4, 5, 6]) ➞ [[], [1, 2, 3, 4, 5, 6]]

intersection_union([1, 1], [1, 1, 1, 1]) ➞ [[1], [1]]

Notas

  • Retorne primeiro a interseção e depois a união.
  • Se as entradas forem disjuntas, retorne um array vazio para a interseção.