Guest User

Untitled

a guest
Jul 19th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.52 KB | None | 0 0
  1. def validate_isbn(isbn)
  2. return true if isbn.nil?
  3. digits = isbn.gsub(/[^0-9X]/, '').split(//).map { |d| d == "X" ? 10 : d.to_i }
  4. if digits.length == 10
  5. # ISBN-10
  6. partial = total = 0
  7. digits.each do |d|
  8. partial += d
  9. total += partial
  10. end
  11. return total.modulo(11) == 0
  12. elsif digits.length == 13
  13. # ISBN-13
  14. sum = 0
  15. digits[0..11].each_with_index do |d, i|
  16. sum += d * (i.odd? ? 3 : 1)
  17. end
  18. sum = sum % 10
  19. return digits[12] == (10 - sum)
  20. else
  21. return false
  22. end
  23. end
Add Comment
Please, Sign In to add comment