Una bolsa , también llamada multiset, es una colección desordenada. Puede llamarlo un conjunto que permite duplicados, o una lista (o una matriz) que no está ordenada / indexada. En este desafío, se le pide que implemente operaciones de bolsa: prueba de suma, diferencia, multiplicación, división, conteo e igualdad.
Operaciones
Las operaciones especificadas pueden no ser convencionales.
- Además combina dos bolsas en una, conservando el número total de cada valor
[1,2,2,3] + [1,2,4] = [1,1,2,2,2,3,4]
- la diferencia elimina de una bolsa cada elemento de otra bolsa, o no hace nada si no existe tal elemento
[1,2,2,4] - [1,2] = [2,4]
[1,2,3] - [2,4] = [1,3]
- multiplicación multiplica cada elemento en la bolsa.
[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 división es poco común: cada n elementos iguales se colocan en n bolsas nuevas iguales, los elementos que no pueden formar un grupo n permanecen en la bolsa. Devuelva cualquiera de las n bolsas nuevas.
[1,1,2,2,2] / 2 = [1,2]
[1,2,2,3,3,3] / 3 = [3]
- contar cuenta cuántas bolsas divisorias se pueden producir a partir de la bolsa de dividendos
[1,1,2,2,2,2,3,3,3] c [1,2,3] = 2
- la prueba de igualdad verifica si dos bolsas tienen los mismos números de cada elemento
[1,2,2,3] == [3,2,1,2] = truthy
[1,2,3] == [1,2,2,3] = falsy
(también se puede usar=
para esto)
Si está utilizando sus propios símbolos para los operadores, especifique.
Formatos
Las bolsas se mostrarán como listas del formulario [1,1,2,3,4]
. Puede usar cualquier otro soporte que no sea cuadrado, o incluso usar comillas, o nada en absoluto. Los elementos serán enteros (matemáticamente, no necesariamente int
) para el propósito de esta pregunta. Las bolsas no tienen que ser clasificadas.
El formato de entrada será dos bolsas o una bolsa y un número entero, con un operador. Puede especificar su propio formato siempre que contenga estos tres.
El formato de salida debe ser una sola bolsa del mismo formato.
Reglas
- no puede utilizar funciones, operaciones o bibliotecas integradas (incluida la biblioteca estándar) que ya las implementa; Sin embargo, está bien usar la concatenación y multiplicación de listas, ya que son, por definición, operaciones de lista, no operaciones de bolsa (que básicamente hacen lo mismo)
- se aplican las lagunas estándar
- la respuesta más corta gana
Casos de prueba
[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