0

リストがあります:

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 番目のサブリストにもあり、再帰的にも同様です...) このタスクはどのように解決できますか?

4

2 に答える 2

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]]
于 2013-04-04T16:27:12.500 に答える