Мешок , также называемый мультимножеством, это неупорядоченная коллекция. Вы можете назвать это набором, который допускает дублирование, или списком (или массивом), который не упорядочен / не проиндексирован. В этом задании вас попросят реализовать операции с сумками: сложение, разность, умножение, деление, подсчет и тест на равенство.
операции
Указанные операции могут быть не традиционными.
- сложение объединяет две сумки в одну, сохраняя общее количество каждого значения
[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