私は、長さが異なる両方の次元の数値の2次元リストを持っています。これらは、ホストの開いているポートを表します。以下は、4 つの異なるホストで開いているポートを示すリストです。
ports = [[22,23],[22],[22,23,80],[23,80]]
2 つ以上のホストで共有されているポートの一意の組み合わせをすべて数えたいと思います。この例では、次の結果が得られるはずです。
Ports -> Count
22 -> 3
22, 23 -> 2
23 -> 3
23, 80 -> 2
80 -> 2
ソリューションを実装しましたが、特定の組み合わせのカウントが使用しているホストの数を超える傾向があるため、結果は正しくありません。簡潔にするために、非常に長いソリューションを投稿していませんが、擬似コードで概説します:
各ホスト間の交点のマトリックスを作成する
マトリックスを抽出/平坦化して、一意のセットのみを含めます。つまり、逆順ではありません。
-- a AND b, b AND a => a AND b
- (抽出/平坦化) リストからのポートの一意の各セットと、そのセットが発生した回数を含む新しいリストを作成します。