111 lines
1.8 KiB
Plaintext
111 lines
1.8 KiB
Plaintext
APPENDCOLS
|
|
=LAMBDA(xs,
|
|
LAMBDA(ys,
|
|
LET(
|
|
nx, COLUMNS(xs),
|
|
colIndexes, SEQUENCE(1, nx + COLUMNS(ys)),
|
|
rowIndexes, SEQUENCE(MAX(ROWS(xs), ROWS(ys))),
|
|
|
|
IFERROR(
|
|
IF(nx < colIndexes,
|
|
INDEX(ys, rowIndexes, colIndexes - nx),
|
|
INDEX(xs, rowIndexes, colIndexes)
|
|
),
|
|
NA()
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
|
|
CHARSROW
|
|
=LAMBDA(s,
|
|
MID(s,
|
|
SEQUENCE(1, LEN(s), 1, 1),
|
|
1
|
|
)
|
|
)
|
|
|
|
|
|
HEADCOL
|
|
=LAMBDA(xs,
|
|
LET(REM, "The first item of each column in xs",
|
|
|
|
INDEX(xs, 1, SEQUENCE(1, COLUMNS(xs)))
|
|
)
|
|
)
|
|
|
|
|
|
HEADROW
|
|
=LAMBDA(xs,
|
|
LET(REM, "The first item of each row in xs",
|
|
|
|
INDEX(
|
|
xs,
|
|
SEQUENCE(ROWS(xs)),
|
|
SEQUENCE(1, 1)
|
|
)
|
|
)
|
|
)
|
|
|
|
|
|
LASTCOL
|
|
=LAMBDA(xs,
|
|
INDEX(
|
|
xs,
|
|
SEQUENCE(ROWS(xs), 1, 1, 1),
|
|
COLUMNS(xs)
|
|
)
|
|
)
|
|
|
|
|
|
SCANLCOLS
|
|
=LAMBDA(op,
|
|
LAMBDA(a,
|
|
LAMBDA(xs,
|
|
APPENDCOLS(a)(
|
|
LET(
|
|
b, op(a, HEADROW(xs)),
|
|
|
|
IF(2 > COLUMNS(xs),
|
|
b,
|
|
SCANLCOLS(op)(b)(
|
|
TAILROW(xs)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
|
|
TAILCOL
|
|
=LAMBDA(cols,
|
|
LET(REM, "The tail of each column in the grid.",
|
|
|
|
INDEX(
|
|
cols,
|
|
SEQUENCE(ROWS(cols) - 1, 1, 2, 1),
|
|
SEQUENCE(1, COLUMNS(cols))
|
|
)
|
|
)
|
|
)
|
|
|
|
|
|
TAILROW
|
|
=LAMBDA(xs,
|
|
LET(REM,"The tail of each row in the grid",
|
|
n, COLUMNS(xs) - 1,
|
|
|
|
IF(0 < n,
|
|
INDEX(
|
|
xs,
|
|
SEQUENCE(ROWS(xs), 1, 1, 1),
|
|
SEQUENCE(1, n, 2, 1)
|
|
),
|
|
NA()
|
|
)
|
|
)
|
|
)
|