Cartesian product of two or more lists
cartesian([[1,2], [3,4], [5,6]]).say
cartesian([[1,2], [3,4], [5,6]], {|*arr| say arr })func cartesian_product(*arr) {
var c = []
var r = []
func {
if (c.len < arr.len) {
for item in (arr[c.len]) {
c.push(item)
__FUNC__()
c.pop
}
}
else {
r.push([c...])
}
}()
return r
}Output:
Output:
Output:
Output:
Last updated