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 isbn_check:
  def digits: tostring | explode | map( select(. >= 48 and . <= 57) | [.] | implode | tonumber);
  def sum(s): reduce s as $x (null; . + $x);
  digits
  | . as $digits
  |      sum(range(0;length;2) | $digits[.]) as $one
  | (3 * sum(range(1;length;2) | $digits[.])) as $two
  | (($one+$two) % 10) == 0;
 
def testingcodes:
 ["978-1734314502", "978-1734314509",
  "978-1788399081", "978-1788399083"];
 
testingcodes[]
| "\(.): \(if isbn_check then "good" else "bad" end)"
 