De binario a número
- O(n) · Media
- Plan completo
- Python
- JavaScript
- textos
- ciclos
Enunciado
En binario solo hay ceros y unos, y cada posición vale el doble que la de su derecha: 1, 2, 4, 8, 16, 32...
Escribe una función que reciba un texto de ceros y unos y regrese el número que representa. Con "1010" la respuesta es 10, porque son 8 + 0 + 2 + 0.
Hay un camino cómodo: recorre el texto de izquierda a derecha y, en cada carácter, multiplica por 2 lo que llevas y súmale 1 si ese carácter es un uno. Al terminar el texto ya tienes el número.
Los ceros de la izquierda no estorban: "0011" también es 3.
Si el texto trae cualquier otra cosa (un 2, una letra, un espacio) no es un número binario: en ese caso regresas -1. El texto vacío tampoco es un número, así que también regresas -1.
Ejemplos
El del ejemplo
"1010" → 10
Un solo uno
"1" → 1
Dos unos son tres
"11" → 3
Cinco dígitos
"11010" → 26
Uno largo
"10001101000" → 1128
Ceros a la izquierda
"00011111" → 31
Un dígito colado en medio
"1021" → -1
Letras pegadas al final
"10uvas" → -1
Un espacio en medio
"101 010" → -1
Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.
Empiezas con esto
Python
def binario_a_numero(texto):
passJavaScript
function binarioANumero(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.