El proceso de verificación del ISBN-10 se utiliza para validar números de identificación de libros.
Normalmente contienen guiones y tienen este aspecto: 3-598-21508-8
El formato ISBN-10 consta de 9 dígitos (del 0 al 9) más un carácter de control (que puede ser un dígito o una X solamente). En el caso de que el carácter de control sea una X, esta representa el valor '10'. Pueden escribirse con o sin guiones, y su validez puede comprobarse 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; en caso contrario, no es válido.
Tomemos el ISBN-10 3-598-21508-8.
Lo sustituimos 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. Llevar esto a cabo requiere pensar un poco en el preprocesamiento y el análisis del string antes de calcular el dígito de control del ISBN.
El programa debe ser capaz de verificar ISBN-10 tanto con guiones de separación 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 '10').
Por ejemplo, 3-598-21507-X es un ISBN-10 válido.
Si te animas con estas tareas, ¡escribe tus propias pruebas para ellas en el archivo de tu 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 ISBN-13. El mismo ISBN debería compararse como igual independientemente del 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á incluso a partir de un ISBN inicial dado.
¿Puedes almacenar el ISBN como un número entero en lugar de como un string, y sería eso alguna vez una buena idea? Si lo hicieras, ¿podrías seguir imprimiendo el ISBN (incluido el dígito de control) como un string?
Regístrate en Exercism para aprender y dominar Julia con 35 conceptos128 ejercicios y mentoría humana real, todo gratis.