RosettaCodeData/Task/CUSIP/11l/cusip.11l

37 lines
832 B
Text
Raw Permalink Normal View History

2023-07-01 11:58:00 -04:00
F cusip_check(=cusip)
I cusip.len != 9
2024-04-19 16:56:29 -07:00
X.throw ValueError(CUSIP must be 9 characters)
2023-07-01 11:58:00 -04:00
cusip = cusip.uppercase()
V total = 0
2026-02-01 16:33:20 -08:00
L(i) 0.<8
2023-07-01 11:58:00 -04:00
V v = 0
V c = cusip[i]
I c.is_digit()
v = Int(c)
E I c.is_alpha()
V p = c.code - A.code + 1
v = p + 9
E I c == *
v = 36
E I c == @
v = 37
E I c == #
v = 38
I i % 2 != 0
v *= 2
total += v I/ 10 + v % 10
V check = (10 - (total % 10)) % 10
R String(check) == cusip.last
V codes = [037833100,
17275R102,
38259P508,
594918104,
68389X106,
68389X105]
L(code) codes
print(code: (I cusip_check(code) {valid} E invalid))