回答編集履歴

1

foreach版追記

2018/07/17 06:07

投稿

sh_akira
sh_akira

スコア380

test CHANGED
@@ -85,3 +85,35 @@
85
85
  A {1,2} B {3,4} C {2,3} がダメで
86
86
 
87
87
  結局両方向になりました。
88
+
89
+
90
+
91
+ 追記:
92
+
93
+ インデクサはやっぱり嫌なので、ごり押しで短くしました
94
+
95
+ ``` csharp
96
+
97
+ var allList = new List<HashSet<int>> { A, B, C, D, E, F, };
98
+
99
+
100
+
101
+ allList.ForEach(outer => allList.ForEach(inner => {
102
+
103
+ if (outer != inner && outer.Where(d => inner.Contains(d)).Any()) {
104
+
105
+ inner.ToList().ForEach(d => outer.Add(d));
106
+
107
+ inner.Clear();
108
+
109
+ }
110
+
111
+ }));
112
+
113
+
114
+
115
+ //result
116
+
117
+ var result = allList.Where(d => d.Any());
118
+
119
+ ```