Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
33
Task/CUSIP/Julia/cusip.julia
Normal file
33
Task/CUSIP/Julia/cusip.julia
Normal file
|
|
@ -0,0 +1,33 @@
|
|||
module CUSIP
|
||||
|
||||
function _lastdigitcusip(input::AbstractString)
|
||||
input = uppercase(input)
|
||||
s = 0
|
||||
|
||||
for (i, c) in enumerate(input)
|
||||
if isdigit(c)
|
||||
v = Int(c) - 48
|
||||
elseif isalpha(c)
|
||||
v = Int(c) - 64 + 9
|
||||
elseif c == '*'
|
||||
v = 36
|
||||
elseif c == '@'
|
||||
v = 37
|
||||
elseif c == '#'
|
||||
v = 38
|
||||
end
|
||||
|
||||
if iseven(i); v *= 2 end
|
||||
s += div(v, 10) + rem(v, 10)
|
||||
end
|
||||
|
||||
return Char(rem(10 - rem(s, 10), 10) + 48)
|
||||
end
|
||||
|
||||
checkdigit(input::AbstractString) = input[9] == _lastdigitcusip(input[1:8])
|
||||
|
||||
end # module CUSIP
|
||||
|
||||
for code in ("037833100", "17275R102", "38259P508", "594918104", "68389X106", "68389X105")
|
||||
println("$code is ", CUSIP.checkdigit(code) ? "correct." : "not correct.")
|
||||
end
|
||||
Loading…
Add table
Add a link
Reference in a new issue