Мешок , также называемый мультимножеством, это неупорядоченная коллекция. Вы можете назвать это набором, который допускает дублирование, или списком (или массивом), который не упорядочен / не проиндексирован. В этом задании вас попросят реализовать операции с сумками: сложение, разность, умножение, деление, подсчет и тест на равенство.
операции
Указанные операции могут быть не традиционными.
- сложение объединяет две сумки в одну, сохраняя общее количество каждого значения
[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]
- деление является необычным: каждый n равных элементов помещается в n одинаковых новых сумок, элементы, которые не могут образовывать n-группу, остаются в сумке. Верните любую из n новых сумок.
[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
- проверка на равенство проверяет, имеют ли две сумки одинаковые номера для каждого элемента
[1,2,2,3] == [3,2,1,2] = truthy
[1,2,3] == [1,2,2,3] = falsy
(также можно использовать=
для этого)
Если вы используете свои собственные символы для операторов, пожалуйста, укажите.
Форматы
Сумки будут отображаться в виде списков формы [1,1,2,3,4]
. Вы можете использовать любые другие скобки, кроме квадратных, или даже использовать кавычки, или вообще ничего. Элементы будут целыми числами (математически, не обязательно int
) для целей этого вопроса. Сумки не должны быть отсортированы.
Формат ввода будет два пакета или мешок и целое число с оператором. Вы можете указать свой собственный формат, если он содержит эти три.
Формат вывода должен быть один мешок одного и того же формата.
правила
- Вы не можете использовать встроенные функции, операции или библиотеки (включая стандартную библиотеку), которые уже реализуют их; Впрочем, можно использовать конкатенацию и умножение списков, поскольку они по определению являются операциями со списками, а не с сумками (которые в основном выполняют одно и то же).
- применяются стандартные лазейки
- самый короткий ответ выигрывает
Контрольные примеры
[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