リストがあります:
def a = [[14, 17, 12, 5], [14, 17, 12, 8, 3], [5, 2], [9]]
交差をチェックする必要があり、2 つのリストが交差する場合はそれらを結合します。
結果は次のようになります。
def b = [[14, 17, 12, 5, 8, 3, 2], [9]]
(つまり、14 は最初のサブリストにあり、これは 2 番目のサブリストにもあり、再帰的にも同様です...) このタスクはどのように解決できますか?
リストがあります:
def a = [[14, 17, 12, 5], [14, 17, 12, 8, 3], [5, 2], [9]]
交差をチェックする必要があり、2 つのリストが交差する場合はそれらを結合します。
結果は次のようになります。
def b = [[14, 17, 12, 5, 8, 3, 2], [9]]
(つまり、14 は最初のサブリストにあり、これは 2 番目のサブリストにもあり、再帰的にも同様です...) このタスクはどのように解決できますか?
Groovy では次のようなことができます。
def a = [[14, 17, 12, 5], [14, 17, 12, 8, 3], [5, 2], [9]]
def rslt = a.inject( [ ] ) { c, n ->
for( cc in c ) {
if( n.find { it in cc } != null ) {
cc.addAll( n )
cc = cc.unique()
return c
}
}
c << n
}
assert rslt == [[14, 17, 12, 5, 8, 3, 2], [9]]