バッグもマルチセットと呼ばれるには、順不同コレクションです。重複を許可するセット、または順序付け/インデックス付けされていないリスト(または配列)を呼び出すことができます。この課題では、加算、差、乗算、除算、カウント、および等価テストのバッグ操作を実装するよう求められます。
操作
指定された操作は従来のものではない場合があります。
- さらに、2つのバッグを1つに結合して、各値の合計数を節約します
[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
- 同等性テストでは、2つのバッグに各要素の番号が同じかどうかを確認します
[1,2,2,3] == [3,2,1,2] = truthy
[1,2,3] == [1,2,2,3] = falsy
(=
これにも使用できます)
演算子に独自のシンボルを使用している場合は、指定してください。
書式
バッグはフォームのリストとして表示されます[1,1,2,3,4]
。角かっこ以外のブラケットを使用することも、引用符を使用することも、まったく使用しないこともできます。int
この質問の目的のために、要素は整数(必ずしも数学ではなく)になります。バッグを分類する必要はありません。
入力フォーマットは、オペレータと、2個のバッグ又はバッグの整数です。これらの3つが含まれている限り、独自の形式を指定できます。
出力フォーマットは同じ形式の単一のバッグであるべきです。
ルール
- これらを既に実装している組み込み関数、操作、またはライブラリ(標準ライブラリを含む)は使用できません。リストの連結と乗算はバッグ操作ではなく定義リスト操作であるため、リスト連結と乗算を使用しても大丈夫です(基本的に同じことを行います)
- 標準的な抜け穴が適用されます
- 最短回答が勝ちます
テストケース
[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