Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
48
Task/CUSIP/Visual-Basic-.NET/cusip.vb
Normal file
48
Task/CUSIP/Visual-Basic-.NET/cusip.vb
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
Module Module1
|
||||
|
||||
Function IsCUSIP(s As String) As Boolean
|
||||
If s.Length <> 9 Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
Dim sum = 0
|
||||
For i = 0 To 7
|
||||
Dim c = s(i)
|
||||
|
||||
Dim v As Integer
|
||||
If "0" <= c AndAlso c <= "9" Then
|
||||
v = Asc(c) - 48
|
||||
ElseIf "A" <= c AndAlso c <= "Z" Then
|
||||
v = Asc(c) - 55 ' Lower case letters are apparently invalid
|
||||
ElseIf c = "*" Then
|
||||
v = 36
|
||||
ElseIf c = "#" Then
|
||||
v = 38
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
|
||||
If i Mod 2 = 1 Then
|
||||
v *= 2 ' check if odd as using 0-based indexing
|
||||
End If
|
||||
sum += v \ 10 + v Mod 10
|
||||
Next
|
||||
Return Asc(s(8)) - 48 = (10 - (sum Mod 10)) Mod 10
|
||||
End Function
|
||||
|
||||
Sub Main()
|
||||
Dim candidates As New List(Of String) From {
|
||||
"037833100",
|
||||
"17275R102",
|
||||
"38259P508",
|
||||
"594918104",
|
||||
"68389X106",
|
||||
"68389X105"
|
||||
}
|
||||
|
||||
For Each candidate In candidates
|
||||
Console.WriteLine("{0} -> {1}", candidate, If(IsCUSIP(candidate), "correct", "incorrect"))
|
||||
Next
|
||||
End Sub
|
||||
|
||||
End Module
|
||||
Loading…
Add table
Add a link
Reference in a new issue