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


[ char 0 char 9 1+ within ]  is digit?    ( c --> b )
 
[ 1 & ]                      is odd?      ( n --> b )
 
[ [] swap ]'[ swap
  witheach [ 
    dup nested 
    unrot over do
    iff [ dip join ]
    else nip
  ] drop ]                   is filter    ( [ --> [ )
 
[ 0 swap
  witheach [
    char->n i^ odd?
    iff [ 3 * + ]
    else +
  ] ]                        is checksum  ( $ --> n )
 
[ filter digit?
  dup size 13 = not
  iff [ drop false ] done
  checksum 10 mod 0 = ]      is isbn      ( $ --> b )
 
[ dup echo$ say ": " isbn
  iff [ say "Good" ]
  else [ say "Bad" ] cr ]    is isbn-test ( $ -->   )
 
$ '978-1734314502' isbn-test
$ '978-1734314509' isbn-test
$ '978-1788399081' isbn-test
$ '978-1788399083' isbn-test