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.)


import std.stdio;
 
bool isValidISBN13(string text) {
    int sum, i;
    foreach (c; text) {
        if ('0' <= c && c <= '9') {
            int value = c - '0';
            if (i % 2 == 0) {
                sum += value;
            } else {
                sum += 3 * value;
            }
 
            i++;
        }
    }
    return i == 13 && 0 == sum % 10;
}
 
unittest {
    assert(isValidISBN13("978-1734314502"));
    assert(!isValidISBN13("978-1734314509"));
    assert(isValidISBN13("978-1788399081"));
    assert(!isValidISBN13("978-1788399083"));
}