Python - Necesito una ayuda con este ejercicio

 
Vista:

Necesito una ayuda con este ejercicio

Publicado por Ileana (2 intervenciones) el 05/04/2021 18:50:38
Escriba un programa que le haga elegir un numero al usuario entre 0 y 31. Su programa debe hacerle sucesivas preguntas y adivinar ese número. Para lograr el objetivo implemente el procedimiento que se indica a continuación:

La idea de solución esta basada en el sistema de numeración binario y consiste en ir "prendiendo" los bits que corresponden al numero. Entonces por cada uno de los 5 bits(1), comenzando desde el mas significativo (mayor valor), usted deberá averiguar si ese bit debe estar prendido o no.

Para saber si el bit mas significativo esta prendido, usted deberá preguntar si el número es <16. De ser mayor, ese bit deberá estar prendido (2). Para averiguar si el segundo bit debe estar prendido, deberá preguntar si el numero que eligió el usuario es < que 16+8 (si antes respondió No) o si es < 8 si antes respondió Si. Y así sucesivamente para los restantes bits. Considere ir llevando una variable en donde ira construyendo el numero. Es decir cada vez que el usuario responda No, deberá incrementar esa variable en la potencia de dos correspondiente.

(1) Para representar 32 valores (0..31) se necesitan al menos 5 bits

(2) Ya que con los restantes bits a lo sumo puedo formar el numero 15.

Si podrian ayudarme con este ejercicio, darme alguna idea. Gracias!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Plutarco
Val: 45
Ha disminuido 1 puesto en Python (en relación al último mes)
Gráfica de Python

Necesito una ayuda con este ejercicio

Publicado por Plutarco (24 intervenciones) el 08/04/2021 20:48:35
Hola en realidad es fácil, solo debes entender que es usando base 2 y ten en cuenta que el mayor número posible a representar con 5 bits es 31 ya que 11111 en base 2 es 16 + 8 + 4 + 2 +1 = 31

Por ejemplo, pensemos en el número 25.
- primero arma tu máscara de bits apagados: 00000
- ahora pregunta si es >=16, la respuesta es verdadera así que prende tu primer bit y te quedará 10000, y el 16 lo dejas en tu siguiente operación
- ahora preguntas si es >=16 +8, la respuesta es verdadera otra vez así que prende tu bit : 11000, y el 8 lo dejas tambien en tu siguiente operación
- ahora preguntas si es >=16 +8 + 4 la respuesta es falsa así que apagas tu bit : 11000
- ahora preguntas si es >=16 + 8 + 2 la respuesta es falsa así que apagas tu bit : 11000
- ahora preguntas si es >=16 + 8 + 1 la respuesta es verdadera así que prendes tu bit : 11001

Espero haber podido ayudar

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar