Worek , zwany także multiset, to nieuporządkowana kolekcja. Możesz nazwać to zestawem, który pozwala na duplikaty, lub listą (lub tablicą), która nie jest uporządkowana / indeksowana. W tym wyzwaniu zostaniesz poproszony o wdrożenie operacji worka: test dodawania, różnicy, mnożenia, dzielenia, liczenia i równości.
Operacje
Określone operacje mogą nie być konwencjonalne.
- dodatek łączy dwie torby w jedną, zachowując całkowitą liczbę każdej wartości
[1,2,2,3] + [1,2,4] = [1,1,2,2,2,3,4]
- różnica usuwa z torby każdy element innej torby lub nic nie robi, jeśli nie ma takiego elementu
[1,2,2,4] - [1,2] = [2,4]
[1,2,3] - [2,4] = [1,3]
- mnożenie zwielokrotnia każdy element w torbie.
[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]
- podział jest rzadki: każdy n równych elementów umieszcza się w n równych nowych torbach, elementy, które nie mogą utworzyć grupy n, pozostają w torbie. Zwróć jedną z n nowych toreb.
[1,1,2,2,2] / 2 = [1,2]
[1,2,2,3,3,3] / 3 = [3]
- liczenie liczy, ile worków dzielnika można wyprodukować z worka dywidendy
[1,1,2,2,2,2,3,3,3] c [1,2,3] = 2
- test równości sprawdza, czy dwie torby mają taką samą liczbę każdego elementu
[1,2,2,3] == [3,2,1,2] = truthy
[1,2,3] == [1,2,2,3] = falsy
(można=
do tego również użyć )
Jeśli używasz własnych symboli dla operatorów, proszę podać.
Formaty
Torby będą wyświetlane jako listy formularza [1,1,2,3,4]
. Możesz użyć dowolnego nawiasu kwadratowego, a nawet cudzysłowów lub nic. int
Dla celów tego pytania elementy będą liczbami całkowitymi (matematycznie, niekoniecznie ). Torby nie muszą być sortowane.
Format wejściowy będzie dwie torby lub worka, a oznacza liczbę całkowitą, z operatorem. Możesz określić własny format, o ile zawiera on te trzy.
Format powinien być pojedynczy torba z tym samym formacie.
Zasady
- nie możesz używać wbudowanych funkcji, operacji lub bibliotek (w tym biblioteki standardowej), które już je implementują; można jednak stosować łączenie i mnożenie listy, ponieważ są one z definicji operacjami na liście, a nie operacjami workowania (które w zasadzie robią to samo)
- obowiązują standardowe luki
- najkrótsza odpowiedź wygrywa
Przypadki testowe
[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