Task

Validate the check digit of an ISBN-13 code:

   Multiply every other digit by  3.
   Add these numbers and the other digits.
   Take the remainder of this number after division by  10.
   If it is  0,   the ISBN-13 check digit is correct.


Use the following codes for testing:

   978-1734314502       (good)
   978-1734314509         (bad)
   978-1788399081       (good)
   978-1788399083         (bad)


Show output here, on this page



See also

   for details:   13-digit ISBN method of validation.       (installs cookies.)


def checkIsbn13(isbn)
        // remove any hyphens or spaces
        isbn = str(isbn).replace("-","").replace(" ","")
 
        // check length = 13
        if len(isbn) != 13
                return false
        end
 
        // check only contains digits and calculate weighted sum
        sum = 0
        for i in range(0, len(isbn) - 1)
                c = isbn[i]
                if (ord(c) < ord("0")) or (ord(c) > ord("9"))
                        return false
                end
 
                if (i % 2) = 0
                        sum += ord(c) - ord("0")
                else
                        sum += 3 * (ord(c) - ord("0"))
                end
        end
 
        return (sum % 10) = 0
end
 
isbns = {"978-1734314502", "978-1734314509", "978-1788399081", "978-1788399083"}
for isbn in isbns
        res = "bad"
        if checkIsbn13(isbn)
                res = "good"
        end
 
        print format("%s: %s\n", isbn, res)
end