Unión e intersección de listas

Crea una función que reciba dos listas y devuelva una lista de intersección y una lista de unión.

  1. Lista de intersección: Elementos compartidos por ambas.
  2. Lista de unión: Elementos que existen en la primera lista, en la segunda o en ambas (no una OR exclusiva).

Aunque las listas de entrada pueden contener números duplicados, las listas de intersección y unión devueltas deben estar convertidas en conjuntos; es decir, no deben contener duplicados. Las listas devueltas deben estar ordenadas de forma ascendente.

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

Intersection: [5, 8]
# 5 y 8 son los únicos 2 números que existen en ambas listas.

Union: [3, 4, 5, 6, 8, 9]
# Cada número existe en al menos una lista.

Ejemplos

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

  • El orden de salida debe ser: [Intersection], [Union].
  • Recuerda que ambas listas de salida deben estar en orden ascendente.
  • Cada lista de entrada tendrá al menos un elemento.
  • Si ambas listas son disjuntas (no comparten ningún elemento), devuelve una lista vacía [] para la intersección.