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


: is-digit [char] 0 - 10 u< ;
 
: isbn?                                ( a n -- f)
  1- chars over + 2>r 0 1 2r> ?do
    dup i c@ dup is-digit              \ get length and factor, setup loop
    if [char] 0 - * rot + swap 3 * 8 mod else drop drop then
  -1 chars +loop drop 10 mod 0=        \ now calculate checksum
;