¿El ISBN es válido?
- O(n) · Media
- Plan completo
- Python
- JavaScript
- textos
- ciclos
- booleanos
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):
passJavaScript
function isbnValido(texto) {
}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.