39 lines
814 B
Plaintext
39 lines
814 B
Plaintext
def cusip_checksum(cusip)
|
|
alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
|
num = "0123456789"
|
|
sum = 0
|
|
|
|
for i in range(1, 8)
|
|
c = cusip[i - 1]
|
|
v = 0
|
|
if c in num
|
|
v = int(c)
|
|
else if c in alpha
|
|
p = alpha[c] + 1
|
|
v = p + 9
|
|
else if c in "*@#"
|
|
v = "*@#"[c] + 36
|
|
end
|
|
if (i % 2) = 0
|
|
v *= 2
|
|
end
|
|
|
|
sum += int(v / 10) + (v % 10)
|
|
end
|
|
|
|
return (10 - (sum % 10)) % 10
|
|
end
|
|
|
|
if main
|
|
codes = {"037833100", "17275R102", "38259P508",\
|
|
"594918104", "68389X106", "68389X105"}
|
|
|
|
for code in codes
|
|
if int(code[len(code) - 1]) = cusip_checksum(code)
|
|
println code + " is valid"
|
|
else
|
|
println code + " is invalid"
|
|
end
|
|
end
|
|
end
|