Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
41
Task/CUSIP/Nim/cusip.nim
Normal file
41
Task/CUSIP/Nim/cusip.nim
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
import strutils
|
||||
|
||||
proc cusipCheck(cusip: string): bool =
|
||||
if cusip.len != 9:
|
||||
return false
|
||||
|
||||
var
|
||||
sum, v = 0
|
||||
for i, c in cusip[0 .. ^2]:
|
||||
if c.isDigit:
|
||||
v = parseInt($c)
|
||||
elif c.isUpperAscii:
|
||||
v = ord(c) - ord('A') + 10
|
||||
elif c == '*':
|
||||
v = 36
|
||||
elif c == '@':
|
||||
v = 37
|
||||
elif c == '#':
|
||||
v = 38
|
||||
|
||||
if i mod 2 == 1:
|
||||
v *= 2
|
||||
|
||||
sum += v div 10 + v mod 10
|
||||
let check = (10 - (sum mod 10)) mod 10
|
||||
return $check == $cusip[^1]
|
||||
|
||||
proc main =
|
||||
let codes = [
|
||||
"037833100",
|
||||
"17275R102",
|
||||
"38259P508",
|
||||
"594918104",
|
||||
"68389X106",
|
||||
"68389X105"
|
||||
]
|
||||
|
||||
for code in codes:
|
||||
echo code, ": ", if cusipCheck(code): "Valid" else: "Invalid"
|
||||
|
||||
main()
|
||||
Loading…
Add table
Add a link
Reference in a new issue