Eine Tasche , auch Multiset genannt, ist eine ungeordnete Sammlung. Sie können es einen Satz nennen, der Duplikate zulässt, oder eine Liste (oder ein Array), die nicht sortiert / indiziert sind. In dieser Herausforderung werden Sie gebeten, Taschenoperationen durchzuführen: Addition, Differenz, Multiplikation, Division, Zählung und Gleichheitstest.
Operationen
Die angegebenen Vorgänge sind möglicherweise nicht konventionell.
- Außerdem werden zwei Beutel zu einem zusammengefasst, wodurch die Gesamtzahl der einzelnen Werte erhalten bleibt
[1,2,2,3] + [1,2,4] = [1,1,2,2,2,3,4]
- Die Differenz entfernt aus einem Beutel jedes Element eines anderen Beutels oder bewirkt nichts, wenn kein solches Element vorhanden ist
[1,2,2,4] - [1,2] = [2,4]
[1,2,3] - [2,4] = [1,3]
- Multiplikation multipliziert jedes Element in der Tasche.
[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]
- Eine Teilung ist ungewöhnlich: Jeweils n gleiche Elemente werden in n gleiche neue Beutel gegeben, Elemente, die keine n-Gruppe bilden können, verbleiben im Beutel. Geben Sie eine der n neuen Taschen zurück.
[1,1,2,2,2] / 2 = [1,2]
[1,2,2,3,3,3] / 3 = [3]
- Beim Zählen wird gezählt, wie viele Teilerbeutel aus dem Dividendenbeutel hergestellt werden können
[1,1,2,2,2,2,3,3,3] c [1,2,3] = 2
- gleichheitstest prüft ob zwei beutel die gleiche nummer von jedem element haben
[1,2,2,3] == [3,2,1,2] = truthy
[1,2,3] == [1,2,2,3] = falsy
(kann auch dafür verwendet werden=
)
Wenn Sie für die Operatoren eigene Symbole verwenden, geben Sie diese bitte an.
Formate
Taschen werden als Listen des Formulars angezeigt [1,1,2,3,4]
. Sie können jede andere als quadratische Klammer verwenden oder sogar Anführungszeichen oder gar nichts. Die Elemente werden int
für die Zwecke dieser Frage (mathematisch, nicht notwendigerweise ) ganze Zahlen sein . Taschen müssen nicht sortiert werden.
Das Eingabeformat ist zwei Beutel oder ein Beutel und eine Ganzzahl mit einem Operator. Sie können Ihr eigenes Format angeben, solange es diese drei enthält.
Das Ausgabeformat sollte ein einzelner Beutel desselben Formats sein.
Regeln
- Sie dürfen keine integrierten Funktionen, Operationen oder Bibliotheken (einschließlich der Standardbibliothek) verwenden, die diese bereits implementieren. Es ist jedoch in Ordnung, die Listenverkettung und -vervielfachung zu verwenden, da sie per Definition Listenoperationen sind und keine Bag-Operationen (die im Grunde das Gleiche tun).
- Es gelten Standardlücken
- kürzeste Antwort gewinnt
Testfälle
[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