我有一个数组,
数组(数组(A,B),数组(I,J),数组(M,N),数组(P))
请帮助找出其中所有可能的组合,如下所示。 提前谢谢。
( A , I )
( A , J )
( B , I )
( B , J )
( A , M )
( B , M )
( B , N )
( A , P )
( B , P )
( I , M )
( I , N )
( J , M )
( J , N )
( I , P )
( J , P )
( M , P )
( N , P )
( A , I , M )
( A , I , N )
( A , J , M )
( A , J , N )
( B , I , M )
( B , I , N )
( B , J , M )
( B , J , N )
( A , I , P )
( A , J , P )
( B , I , P )
( B , J , P )
( A , M , P )
( A , N , P )
( B , M , P )
( B , N , P )
( I , M , P )
( I , N , P )
( J , M , P )
( J , N , P )
答案 0 :(得分:1)
这样做:
val input = List(List("A", "B"), List("I", "J"), List("M", "N"), List("P"))
val result =
(2 to input.size).toList.flatMap {
combSize => input.combinations(combSize).flatMap {
comb =>
comb.dropRight(1).foldRight(comb.takeRight(1).transpose) {
(el, accum) =>
accum.flatMap(accEl => el.map(_ :: accEl))
}
}.toList
}
结果:
List(A, I)
List(B, I)
List(A, J)
List(B, J)
List(A, M)
List(B, M)
List(A, N)
List(B, N)
List(A, P)
List(B, P)
List(I, M)
List(J, M)
List(I, N)
List(J, N)
List(I, P)
List(J, P)
List(M, P)
List(N, P)
List(A, I, M)
List(B, I, M)
List(A, J, M)
List(B, J, M)
List(A, I, N)
List(B, I, N)
List(A, J, N)
List(B, J, N)
List(A, I, P)
List(B, I, P)
List(A, J, P)
List(B, J, P)
List(A, M, P)
List(B, M, P)
List(A, N, P)
List(B, N, P)
List(I, M, P)
.....