RosettaCodeData/Task/ISBN13-check-digit/Visual-Basic-.NET/isbn13-check-digit.vb
2024-03-06 22:25:12 -08:00

28 lines
867 B
VB.net

Module Module1
Function CheckISBN13(code As String) As Boolean
code = code.Replace("-", "").Replace(" ", "")
If code.Length <> 13 Then
Return False
End If
Dim sum = 0
For Each i_d In code.Select(Function(digit, index) (index, digit))
Dim index = i_d.index
Dim digit = i_d.digit
If Char.IsDigit(digit) Then
sum += (Asc(digit) - Asc("0")) * If(index Mod 2 = 0, 1, 3)
Else
Return False
End If
Next
Return sum Mod 10 = 0
End Function
Sub Main()
Console.WriteLine(CheckISBN13("978-0596528126"))
Console.WriteLine(CheckISBN13("978-0596528120"))
Console.WriteLine(CheckISBN13("978-1788399081"))
Console.WriteLine(CheckISBN13("978-1788399083"))
End Sub
End Module