El proceso de verificación del ISBN-10 se usa para validar números de identificación de libros.
Por lo general, estos contienen guiones y tienen este aspecto: 3-598-21508-8
El formato del ISBN-10 consta de 9 dígitos (del 0 al 9) más un carácter de verificación (que puede ser un dígito o una X solamente). Si el carácter de verificación es una X, esta representa el valor «10». Se pueden escribir con o sin guiones, y su validez se puede comprobar con la siguiente fórmula:
(d₁ * 10 + d₂ * 9 + d₃ * 8 + d₄ * 7 + d₅ * 6 + d₆ * 5 + d₇ * 4 + d₈ * 3 + d₉ * 2 + d₁₀ * 1) mod 11 == 0
Si el resultado es 0, el ISBN-10 es válido; de lo contrario, no lo es.
Tomemos el ISBN-10 3-598-21508-8.
Lo reemplazamos en la fórmula y obtenemos:
(3 * 10 + 5 * 9 + 9 * 8 + 8 * 7 + 2 * 6 + 1 * 5 + 5 * 4 + 0 * 3 + 8 * 2 + 8 * 1) mod 11 == 0
Como el resultado es 0, esto demuestra que nuestro ISBN es válido.
Dado un string, el programa debe comprobar si el string proporcionado es un ISBN-10 válido. Implementar esto requiere pensar un poco en cómo preprocesar y analizar el string antes de calcular el dígito de control del ISBN.
El programa debe poder verificar un ISBN-10 tanto con guiones separadores como sin ellos.
Convertir strings en números puede ser complicado en ciertos lenguajes.
Ahora es aún más complicado, ya que el dígito de control de un ISBN-10 puede ser «X» (que representa el valor «10»).
Por ejemplo, 3-598-21507-X es un ISBN-10 válido.
Si intentas estas tareas, escribe tus propias pruebas para ellas en tu archivo de solución.
Define una macro de string de modo que isbn"3-598-21507-X" == ISBN("3-598-21507-X").
Haz que el constructor acepte también los ISBN-13. El mismo ISBN debe ser igual sin importar el formato: ISBN("1-234-56789-X") == ISBN("978-1-234-56789-7").
Define una función o un iterador que genere un ISBN válido, quizás incluso a partir de un ISBN inicial dado.
¿Puedes guardar el ISBN como un entero en lugar de un string, y sería eso alguna vez una buena idea? Si lo hicieras, ¿podrías aún así imprimir el ISBN (incluido el dígito verificador) como un string?
Regístrate en Exercism para aprender y dominar Julia con 35 conceptos128 ejercicios y mentoría humana real, todo gratis.