Saltar al contenido

Los casilleros ocupados

Enunciado

Eufemia cuida los casilleros del balneario. El tablero de la entrada es de los viejos: en vez de prender una lucecita por casillero, muestra un solo número. Ese número, escrito en binario, dice qué casilleros están ocupados: cada cifra 1 es un casillero con llave puesta y cada cifra 0 es uno libre. Escribe una función que reciba ese número, del 0 en adelante, y regrese cuántos casilleros están ocupados, o sea cuántos unos tiene el número escrito en binario.

Con 16 regresas 1: en binario el 16 es 10000 y trae un solo uno. Con 89 regresas 4, porque el 89 en binario es 1011001. Con 0 regresas 0: el tablero en ceros, ningún casillero ocupado.

Las cifras binarias se sacan dividiendo entre 2 y mirando lo que sobra: si sobra 1, esa cifra es un uno y ese casillero está ocupado; si sobra 0, está libre. Después te quedas con el resultado de la división y sigues, hasta que el número se acaba. No tienes que armar el texto en binario: aquí solo hay que contar.

El tablero de Eufemia lleva hasta 31 casilleros.

Ejemplos

  • El del ejemplo

    16 → 1

  • Ochenta y nueve

    89 → 4

  • Ocho casilleros seguidos

    255 → 8

  • Dos ocupados y uno libre

    6 → 2

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

Empiezas con esto

Python

def ocupados(n):
    pass

JavaScript

function ocupados(n) {
}
Resolver este reto

Se abre en el navegador, con el editor y las pruebas. Es gratis y no hace falta cuenta para empezar.

Más retos de O(log n)

Ver todos los retos →