Una borsa , chiamata anche multiset, è una collezione non ordinata. Puoi chiamarlo un set che consente duplicati o un elenco (o un array) che non è ordinato / indicizzato. In questa sfida, ti viene chiesto di implementare le operazioni di borsa: addizione, differenza, moltiplicazione, divisione, conteggio e test di uguaglianza.
operazioni
Le operazioni specificate potrebbero non essere convenzionali.
- Inoltre combina due buste in una, conservando il numero totale di ciascun valore
[1,2,2,3] + [1,2,4] = [1,1,2,2,2,3,4]
- la differenza rimuove da un sacchetto ogni elemento di un altro sacchetto o non fa nulla se non è presente tale elemento
[1,2,2,4] - [1,2] = [2,4]
[1,2,3] - [2,4] = [1,3]
- la moltiplicazione moltiplica ogni elemento nel sacchetto.
[1,2,3,3,4] * 3 = [1,1,1,2,2,2,3,3,3,3,3,3,4,4,4]
2 * [1,3] = [1,1,3,3]
- la divisione è insolita: ogni n elementi uguali vengono messi in n nuovi sacchetti uguali, gli elementi che non possono formare un gruppo n rimangono nel sacchetto. Restituisci una delle n nuove borse.
[1,1,2,2,2] / 2 = [1,2]
[1,2,2,3,3,3] / 3 = [3]
- conteggio conta quanti sacchetti divisori possono essere prodotti dal sacchetto dividendi
[1,1,2,2,2,2,3,3,3] c [1,2,3] = 2
- test di uguaglianza verifica se due sacchi hanno gli stessi numeri di ciascun elemento
[1,2,2,3] == [3,2,1,2] = truthy
[1,2,3] == [1,2,2,3] = falsy
(può essere utilizzato anche=
per questo)
Se si utilizzano i propri simboli per gli operatori, si prega di specificare.
formati
I sacchetti verranno visualizzati come elenchi del modulo [1,1,2,3,4]
. Puoi usare qualsiasi parentesi diversa da quelle quadrate, o anche usare virgolette o niente del tutto. Gli elementi saranno numeri interi (matematicamente, non necessariamente int
) ai fini di questa domanda. I bagagli non devono essere ordinati.
Il formato di input sarà due sacchetti o un sacchetto e un numero intero, con un operatore. Puoi specificare il tuo formato purché contenga questi tre.
Il formato di output dovrebbe essere un singolo sacchetto dello stesso formato.
Regole
- non è possibile utilizzare funzioni integrate, operazioni o librerie (inclusa la libreria standard) che già le implementano; va bene però usare la concatenazione e la moltiplicazione di elenchi poiché sono operazioni per elenco di definizioni, non operazioni di borsa (che in pratica fanno la stessa cosa)
- si applicano scappatoie standard
- vince la risposta più breve
Casi test
[1,2,2,3] + [1,2,4]
[1,1,2,2,2,3,4]
[1,2,2,4] - [1,2]
[2,4]
[1,2,3] - [2,4]
[1,3]
[1,2,3,3,4] * 3
[1,1,1,2,2,2,3,3,3,3,3,3,4,4,4]
2 * [1,3]
[1,1,3,3]
[1,1,2,2,2] / 2
[1,2]
[1,2,2,3,3,3] / 3
[3]
[1,1,2,2,2,2,3,3,3] c [1,2,3]
2
[3,2,1,2] == [1,2,2,3]
truthy
[1,2,3] == [1,2,2,3]
falsy