Votre objectif est de calculer l'intersection définie de deux listes d'entiers. L'intersection est définie comme le groupe unique non ordonné d'entiers trouvé au moins une fois dans les deux listes d'entrée.
Contribution
L'entrée peut être dans n'importe quel format souhaité (paramètre de fonction, stdio, etc.) et se compose de deux listes d'entiers. Vous êtes nombreux à ne pas supposer quoi que ce soit sur chaque liste, sinon qu'ils peuvent contenir un nombre non négatif d'entiers (c'est-à-dire qu'ils ne sont pas triés, peuvent éventuellement contenir des doublons, peuvent avoir des longueurs différentes et peuvent même être vides). Il est supposé que chaque entier rentrera dans le type d'entier natif signé de votre langue, qu'il pourra comporter plus de 1 chiffre décimal et qu'il sera signé.
Exemple d'entrée:
1 4 3 9 8 8 3 7 0
10 1 4 4 8 -1
Production
La sortie est une liste entière d'entiers représentant l'intersection définie des deux listes dans le format souhaité (valeur de retour, stdio, etc.). Il n'est pas nécessaire que la sortie soit triée, mais vous êtes invité à fournir une implémentation qui se trouve toujours être triée. La sortie doit former un ensemble non ordonné valide (par exemple, elle ne doit contenir aucune valeur en double).
Exemples de cas de test (notez que l'ordre de sortie n'est pas important):
Les deux premières lignes sont les listes d'entrée, la troisième ligne est la sortie. (empty)
désigne la liste vide.
(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)
Notation
C'est le golf de code; la réponse la plus courte en octets l'emporte.
Les trous de boucle standard sont interdits. Vous pouvez utiliser toutes les fonctionnalités intégrées non conçues pour des opérations de type ensemble.
Fonctions intégrées interdites:
- création / suppression de doublons
- définir la différence / intersection / union
- Test d'appartenance généralisé (par exemple, quelque chose de similaire au
in
mot - clé dans Python, desindexOf
fonctions similaires , etc.). Notez que l'utilisation des constructions "foreach item in list" est autorisée (en supposant qu'elles ne violent aucune des autres restrictions), malgré le fait que Python réutilise lein
mot - clé pour créer cette construction. - Ces éléments intégrés interdits sont "viraux", c'est-à-dire que s'il existe un élément intégré plus grand contenant l'une de ces sous-fonctionnalités, il est également interdit (par exemple, filtrage par appartenance à une liste).
Tous les éléments intégrés ne figurant pas dans la liste ci-dessus sont autorisés (par exemple, tri, test d'égalité des nombres entiers, ajout / suppression de liste par index, filtrage, etc.).
Par exemple, prenez les deux exemples d'extraits suivants (code de type 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)
Vous êtes invités à implémenter vous-même l'une de ces fonctionnalités de type ensemble et elles compteront pour votre score.
Votre solution devrait se terminer dans un délai raisonnable (disons, moins d'une minute sur le matériel que vous avez pour deux listes ~ longueur 1000 chacune).