Task

For each number list of 6-digit SEDOLs, calculate and append the checksum digit.



That is, given this input:

710889
B0YBKJ
406566
B0YBLH
228276
B0YBKL
557910
B0YBKR
585284
B0YBKT
B00030

Produce this output:

7108899
B0YBKJ7
4065663
B0YBLH2
2282765
B0YBKL9
5579107
B0YBKR5
5852842
B0YBKT7
B000300

Extra credit

Check each input is correctly formed, especially with respect to valid characters allowed in a SEDOL string.



Related tasks

   Luhn test
   ISIN


SEDOLCHECKSUM
=LAMBDA(s,
    IF(6 = LEN(s),
        LET(
            cs, MID(s, SEQUENCE(1, 6, 1, 1), 1),
            isVowel, LAMBDA(c, 
                ELEM(c)({"A","E","I","O","U"})
            ),
            sedolValue, LAMBDA(c,
                LET(
                    ic, CODE(c),
                    IF(65 > ic,
                        ic - 48,
                        (ic + 10) - 65
                    )
                )
            ),
            IF(OR(isVowel(cs)),
                " -> Invalid vowel in SEDOL string",
                MOD(
                    10 - MOD(
                        SUM(
                            MUL({1,3,1,7,3,9})(
                                sedolValue(cs)
                            )
                        ), 10
                    ), 10
                )
            )
        ),
        "Expected a 6-character SEDOL"
    )
)