Uma bolsa , também chamada de multiset, é uma coleção não ordenada. Você pode chamá-lo de um conjunto que permite duplicatas ou de uma lista (ou matriz) que não está ordenada / indexada. Nesse desafio, você é solicitado a implementar operações de bolsa: adição, diferença, multiplicação, divisão, contagem e teste de igualdade.
Operações
As operações especificadas podem não ser convencionais.
- Além disso, combina duas malas em uma, conservando o número total de cada valor
[1,2,2,3] + [1,2,4] = [1,1,2,2,2,3,4]
- A diferença remove de uma sacola cada elemento de outra sacola ou não faz nada se esse elemento não existir
[1,2,2,4] - [1,2] = [2,4]
[1,2,3] - [2,4] = [1,3]
- multiplicação multiplica cada elemento no saco.
[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]
- A divisão é incomum: cada n elementos iguais são colocados em n novas bolsas iguais, elementos que não podem formar um grupo n permanecem na bolsa. Devolva qualquer uma das n novas bolsas.
[1,1,2,2,2] / 2 = [1,2]
[1,2,2,3,3,3] / 3 = [3]
- contagem conta quantas sacolas divisórias podem ser produzidas a partir da sacola de dividendos
[1,1,2,2,2,2,3,3,3] c [1,2,3] = 2
- teste de igualdade verifica se duas malas têm o mesmo número de cada elemento
[1,2,2,3] == [3,2,1,2] = truthy
[1,2,3] == [1,2,2,3] = falsy
(também pode ser usado=
para isso)
Se você estiver usando seus próprios símbolos para os operadores, especifique.
Formatos
As malas serão exibidas como listas do formulário [1,1,2,3,4]
. Você pode usar qualquer outro suporte que não seja quadrado, ou mesmo usar aspas, ou nada. Os elementos serão inteiros (matematicamente, não necessariamente int
) para os fins desta pergunta. As malas não precisam ser classificadas.
O formato de entrada será duas malas ou uma maleta e um número inteiro, com um operador. Você pode especificar seu próprio formato, desde que contenha esses três.
O formato de saída deve ser uma única bolsa do mesmo formato.
Regras
- você não pode usar funções, operações ou bibliotecas internas (incluindo a biblioteca padrão) que já as implementam; não há problema em usar concatenação e multiplicação de lista, pois são por definição operações de lista, não operações de bolsa (que basicamente fazem a mesma coisa)
- lacunas padrão se aplicam
- resposta mais curta ganha
Casos de teste
[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