40 lines
1.0 KiB
Plaintext
40 lines
1.0 KiB
Plaintext
=LAMBDA(s,
|
|
LET(
|
|
ns, VLOOKUP(
|
|
CHARS(s), CUSIPMAP, 2, FALSE
|
|
),
|
|
|
|
AND(
|
|
9 = COLUMNS(ns),
|
|
LET(
|
|
firstEight, INITCOLS(ns),
|
|
|
|
ixs, SEQUENCE(1, 8),
|
|
|
|
evensDoubled, IF(ISEVEN(ixs),
|
|
2 * INDEX(firstEight, 1, ixs),
|
|
INDEX(firstEight, 1, ixs)
|
|
),
|
|
|
|
LASTCOL(ns) = MOD(
|
|
10 - MOD(
|
|
SUM(
|
|
QUOTIENT(evensDoubled, 10),
|
|
MOD(evensDoubled, 10)
|
|
),
|
|
10
|
|
),
|
|
10
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
|
|
CUSIPMAP
|
|
={"0",0;"1",1;"2",2;"3",3;"4",4;"5",5;"6",6;"7",7;"8",8;"9",9;"A",
|
|
10;"B",11;"C",12;"D",13;"E",14;"F",15;"G",16;"H",17;"I",18;"J",19;"K",
|
|
20;"L",21;"M",22;"N",23;"O",24;"P",25;"Q",26;"R",27;"S",28;"T",29;"U",
|
|
30;"V",31;"W",32;"X",33;"Y",34;"Z",35;"*",36;"@",37;"#",38}
|