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