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

You might use the following codes for testing:

:   :   :   :   * 978-0596528126       (good)
                * 978-0596528120         (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.)
assistant
(formerly Perl 6)

**Works with**: Rakudo version 2019.11

Also test a value that has a zero check digit.

```
sub check-digit ($isbn) {
     (10 - (sum (|$isbn.comb(/<[0..9]>/)) »*» (1,3)) % 10).substr: *-1
}

{
    my $check = .substr(*-1);
    my $check-digit = check-digit .chop;
    say "$_ : ", $check == $check-digit ??
        'Good' !!
        "Bad check-digit $check; should be $check-digit"
} for words <
    978-0596528126
    978-0596528120
    978-1788399081
    978-1788399083
    978-2-74839-908-0
    978-2-74839-908-5
>;

```

Output:

```
978-0596528126 : Good
978-0596528120 : Bad check-digit 9; should be 2
978-1788399081 : Good
978-1788399083 : Bad check-digit 3; should be 1
978-2-74839-908-0 : Good
978-2-74839-908-5 : Bad check-digit 5; should be 0

```