目標は、整数の2つのリストの積集合を計算することです。共通部分は、両方の入力リストで少なくとも1回見つかった整数の順序付けされていない一意のグループとして定義されます。
入力
入力は任意の形式(関数パラメーター、stdioなど)にすることができ、整数の2つのリストで構成されます。多くの場合、負でない数の整数が含まれている(つまり、並べ替えられていない、重複が含まれている、長さが異なる、空であるなど)以外は、各リストについて何も想定していません。各整数は、言語のネイティブな符号付き整数型に適合し、1桁以上の10進数であり、符号付きであると想定されています。
入力例:
1 4 3 9 8 8 3 7 0
10 1 4 4 8 -1
出力
出力は、2つのリストの共通部分を任意のフォーマット(戻り値、stdioなど)に設定した整数のリストのようなものです。出力をソートする必要はありませんが、常にソートされる実装を提供することはできます。出力は、順序付けされていない有効なセットを形成する必要があります(たとえば、重複する値が含まれていてはなりません)。
テストケースの例(出力の順序は重要ではないことに注意してください):
最初の2行は入力リスト、3行目は出力です。(empty)
空のリストを示します。
(empty)
(empty)
(empty)
1000
(empty)
(empty)
3 1 2 4 3 1 1 1 1 3
3 1 -1 0 8 3 3 1
1 3
1 2 1
3 3 4
(empty)
得点
これはコードゴルフです。バイト単位の最短の回答が優先されます。
標準のループホールは禁止されています。セットのような操作用に設計されていない組み込み機能を使用できます。
禁止されている組み込み機能:
- 複製の作成/削除を設定する
- セット差/交差/ユニオン
- 一般的なメンバーシップテスト(たとえば
in
、Python のキーワードに類似したindexOf
もの、関数のようなもの)。Pythonがin
キーワードを再利用してこの構成を作成しているにもかかわらず、「リスト内のforeach項目」構成の使用が許可されていることに注意してください(他の制限に違反していない場合)。 - これらの禁止されているビルトインは「バイラル」です。つまり、これらのサブ機能のいずれかを含む大きなビルトインがある場合、同様に禁止されます(たとえば、リストのメンバーシップによるフィルタリング)。
上記のリストにない組み込みはすべて許可されます(例:並べ替え、整数の等価性テスト、インデックスによるリストの追加/削除、フィルタリングなど)。
たとえば、次の2つの例のスニペット(Pythonに似たコード)を見てください。
# prohibited: filters by testing if each value in tmpList is a member of listA
result = tmpList.filter(listA)
# ok: filtering by a lambda which manually iterates over listA and checks for equality
def my_in_func(val, slist):
for a in slist:
if(val == a):
return True
return False
result = filter(lambda v: my_in_func(val, listA), tmpList)
これらのセットのような機能を自分で実装してもかまいません。それらはスコアに加算されます。
ソリューションは妥当な時間内に完了する必要があります(たとえば、2つのリスト(それぞれ長さ1000まで)のハードウェアでは、1分もかかりません)。