val listOfLists
= List
(List
(1,
2,
3), List
(10,
20)) val cartesianProduct
= listOfLists.
foldRight(List
(Nil
): List
[List
[Int
]])((l1, l2
) => l1.flatMap(i =>
l2.map(l => i :: l)
)
)
println(cartesianProduct) // [[1, 10], [1, 20], [2, 10], [2, 20], [3, 10], [3, 20]]
}
b2JqZWN0IE1haW4gZXh0ZW5kcyBBcHAgewogICAgdmFsIGxpc3RPZkxpc3RzID0gTGlzdChMaXN0KDEsIDIsIDMpLCBMaXN0KDEwLCAyMCkpCgl2YWwgY2FydGVzaWFuUHJvZHVjdCA9IGxpc3RPZkxpc3RzLmZvbGRSaWdodChMaXN0KE5pbCk6IExpc3RbTGlzdFtJbnRdXSkoKGwxLCBsMikgPT4KCSAgbDEuZmxhdE1hcChpID0+CgkJbDIubWFwKGwgPT4gaSA6OiBsKQoJICApCgkpCgoJcHJpbnRsbihjYXJ0ZXNpYW5Qcm9kdWN0KSAvLyBbWzEsIDEwXSwgWzEsIDIwXSwgWzIsIDEwXSwgWzIsIDIwXSwgWzMsIDEwXSwgWzMsIDIwXV0KfQ==
List(List(1, 10), List(1, 20), List(2, 10), List(2, 20), List(3, 10), List(3, 20))