Saltar al contenido

¿El ISBN es válido?

Enunciado

Todos los libros traen atrás un ISBN: diez caracteres que dicen de qué libro se trata. El último no es información, es un dígito de control: está ahí para cachar cuando alguien escribió mal los otros nueve.

Escribe una función que reciba ese código como texto y regrese verdadero si el ISBN es válido y falso si no.

Se revisa así: multiplicas el primer carácter por 10, el segundo por 9, el tercero por 8, y así hasta el último, que va por 1. Si la suma de todo se divide exacto entre 11, el código es válido. Con "3-598-21508-8" la suma da 264, y 264 entre 11 son 24 sin sobrar nada.

Las reglas: los guiones no cuentan, vengan donde vengan, así que quítalos o sáltatelos. Sin ellos tienen que quedar exactamente diez caracteres, ni uno más ni uno menos. Los primeros nueve son dígitos. El último puede ser un dígito o una "X", que ahí vale 10; en cualquier otro lugar la X no es válida.

Cualquier otra letra hace que el código no sirva, esté donde esté: no vale saltártela ni contarla como 0.

Ejemplos

  • Un ISBN bueno

    "3-598-21508-8" → true

  • El dígito de control no cuadra

    "3-598-21508-9" → false

  • Termina en X

    "3-598-21507-X" → true

  • Sin guiones

    "3598215088" → true

  • Una X a media cadena

    "3-598-2X507-9" → false

  • Otra letra al final

    "4-598-21507-B" → false

  • Le sobra un dígito

    "3-598-21508-96" → false

Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.

Empiezas con esto

Python

def isbn_valido(texto):
    pass

JavaScript

function isbnValido(texto) {
}
Resolver este reto

Se abre en el navegador, con el editor y las pruebas. Este reto es del plan completo; los de O(1) y O(log n) son gratis.

Más retos de O(n)

Ver todos los retos →