43 lines
790 B
Text
43 lines
790 B
Text
cartesianProduct
|
|
=LAMBDA(xs,
|
|
LAMBDA(ys,
|
|
LET(
|
|
ny, ROWS(ys),
|
|
ixs, SEQUENCE(ROWS(xs) * ny, 2, 1, 1),
|
|
|
|
IF(0 <> MOD(ixs, 2),
|
|
INDEX(xs,
|
|
1 + QUOTIENT(ixs, ny * 2)
|
|
),
|
|
LET(
|
|
r, MOD(QUOTIENT(ixs, 2), ny),
|
|
|
|
INDEX(ys, IF(0 = r, ny, r))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
|
|
validRows
|
|
=LAMBDA(xs,
|
|
LET(
|
|
ixs, SEQUENCE(ROWS(xs), 1, 1, 1),
|
|
valids, FILTER(
|
|
ixs,
|
|
LAMBDA(i,
|
|
NOT(ISNA(INDEX(xs, i)))
|
|
)(ixs)
|
|
),
|
|
|
|
INDEX(
|
|
xs,
|
|
valids,
|
|
SEQUENCE(
|
|
1,
|
|
COLUMNS(xs)
|
|
)
|
|
)
|
|
)
|
|
)
|