Su objetivo es calcular la intersección establecida de dos listas de enteros. La intersección se define como el grupo único de enteros no ordenados que se encuentra al menos una vez en ambas listas de entrada.
Entrada
La entrada puede estar en cualquier formato deseado (parámetro de función, stdio, etc.) y consta de dos listas de enteros. Es posible que no asuma nada sobre cada lista, aparte de que pueden contener cualquier número no negativo de enteros (es decir, no están clasificados, posiblemente pueden contener duplicados, pueden tener diferentes longitudes e incluso pueden estar vacíos). Se supone que cada número entero encajará en el tipo de entero con signo nativo de su idioma, puede tener más de 1 dígito decimal de longitud y está firmado.
Entrada de ejemplo:
1 4 3 9 8 8 3 7 0
10 1 4 4 8 -1
Salida
La salida es cualquier lista de enteros que representa la intersección establecida de las dos listas en cualquier formato deseado (valor de retorno, stdio, etc.). No es necesario que se ordene la salida, aunque puede proporcionar una implementación que siempre se ordena. La salida debe formar un conjunto no ordenado válido (por ejemplo, no debe contener ningún valor duplicado).
Ejemplos de casos de prueba (tenga en cuenta que el orden de salida no es importante):
Las primeras dos líneas son las listas de entrada, la tercera línea es la salida. (empty)
denota la lista vacía.
(empty)
(empty)
(empty)
1000
(empty)
(empty)
3 1 2 4 3 1 1 1 1 3
3 1 -1 0 8 3 3 1
1 3
1 2 1
3 3 4
(empty)
Puntuación
Este es el código de golf; La respuesta más corta en bytes gana.
Los agujeros de bucle estándar están prohibidos. Puede usar cualquier función incorporada que no esté diseñada para operaciones similares a las de un conjunto.
Funciones incorporadas prohibidas:
- establecer creación / eliminar duplicados
- establecer diferencia / intersección / unión
- Pruebas de membresía generalizadas (por ejemplo, algo similar a la
in
palabra clave en Python,indexOf
funciones similares, etc.). Tenga en cuenta que el uso de construcciones de "elemento foreach en la lista" está permitido (suponiendo que no violen ninguna de las otras restricciones), a pesar de que Python reutiliza lain
palabra clave para crear esta construcción. - Estas incorporaciones prohibidas son "virales", es decir, si hay una función incorporada más grande que contenga alguna de estas subcaracterísticas, está igualmente prohibida (por ejemplo, filtrado por membresía en una lista).
Se permiten todos los elementos integrados que no están en la lista anterior (por ejemplo, clasificación, prueba de igualdad de enteros, lista anexar / eliminar por índice, filtrado, etc.).
Por ejemplo, tome los siguientes dos fragmentos de ejemplo (código similar a Python):
# prohibited: filters by testing if each value in tmpList is a member of listA
result = tmpList.filter(listA)
# ok: filtering by a lambda which manually iterates over listA and checks for equality
def my_in_func(val, slist):
for a in slist:
if(val == a):
return True
return False
result = filter(lambda v: my_in_func(val, listA), tmpList)
Le invitamos a implementar cualquiera de estas características de conjunto usted mismo y contarán para su puntaje.
Su solución debe completarse en un período de tiempo razonable (digamos, menos de un minuto en cualquier hardware que tenga para dos listas ~ 1000 de longitud cada una).