Il tuo obiettivo è calcolare l'intersezione impostata di due elenchi di numeri interi. L'intersezione è definita come il gruppo univoco unico di numeri interi trovato almeno una volta in entrambi gli elenchi di input.
Ingresso
L'ingresso può essere in qualsiasi formato desiderato (parametro funzione, stdio, ecc.) Ed è costituito da due elenchi di numeri interi. Molti di voi non assumono nulla su ciascuna lista se non che possono contenere qualsiasi numero non negativo di numeri interi (cioè non sono ordinati, possono contenere duplicati, possono avere lunghezze diverse e possono anche essere vuoti). Si presume che ciascun numero intero si adatterà al tipo intero con segno nativo della tua lingua, può essere lungo più di 1 cifra decimale e viene firmato.
Esempio di input:
1 4 3 9 8 8 3 7 0
10 1 4 4 8 -1
Produzione
L'output è qualsiasi elenco di numeri interi che rappresentano l'intersezione impostata delle due liste in qualsiasi formato desiderato (valore di ritorno, stdio, ecc.). Non è necessario che l'output sia ordinato, anche se sei il benvenuto a fornire un'implementazione che risulta essere sempre ordinata. L'output deve formare un set valido non ordinato (ad es. Non deve contenere valori duplicati).
Esempi di test (si noti che l'ordine dell'output non è importante):
Le prime due righe sono gli elenchi di input, la terza riga è l'output. (empty)
indica l'elenco vuoto.
(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)
punteggio
Questo è il codice golf; vince la risposta più breve in byte.
Sono vietati i fori standard. È possibile utilizzare qualsiasi funzionalità integrata non progettata per operazioni simili a set.
Funzioni incorporate vietate:
- imposta la creazione / rimozione dei duplicati
- imposta la differenza / intersezione / unione
- Test di appartenenza generalizzati (ad es. Qualcosa di simile alla
in
parola chiave in Python,indexOf
funzioni simili, ecc.). Si noti che è consentito l'uso dei costrutti "foreach item in list" (supponendo che non violino nessuna delle altre restrizioni), nonostante Python riutilizzi lain
parola chiave per creare questo costrutto. - Questi built-in vietati sono "virali", ovvero se esiste un built-in più grande contenente una di queste funzionalità secondarie, è similmente vietato (ad esempio, filtraggio in base a un abbonamento in un elenco).
Sono consentiti tutti i componenti incorporati non presenti nell'elenco precedente (ad es. Ordinamento, test di uguaglianza di numeri interi, aggiunta / rimozione di elenchi per indice, filtro, ecc.).
Ad esempio, prendi i seguenti due frammenti di esempio (codice simile 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)
Puoi implementare tu stesso una qualsiasi di queste funzioni simili a un set e queste verranno conteggiate ai fini del tuo punteggio.
La tua soluzione dovrebbe essere completata in un ragionevole lasso di tempo (diciamo, meno di un minuto su qualunque hardware tu abbia per due liste ~ lunghezza 1000 ciascuna).