Saltar al contenido

De binario a número

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):
    pass

JavaScript

function binarioANumero(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 →