
Vamos a resolver el problema de adivinar un número del 1 al 100. Lo haremos paso a paso. Dividiremos el problema en partes más pequeñas.
Parte 1: Entendiendo el problema
El objetivo es que un programa adivine un número secreto. Ese número está entre 1 y 100, ambos inclusive. El programa puede hacer preguntas. Recibirá pistas como "mayor" o "menor" después de cada intento.
Parte 2: Estrategia de búsqueda binaria
Usaremos la estrategia de búsqueda binaria. Esta estrategia es muy eficiente. Divide el rango de búsqueda a la mitad en cada paso. Comenzaremos con el rango completo, de 1 a 100.
Must Read
Parte 3: Implementación de la búsqueda binaria
Necesitamos variables para el límite inferior y superior. Inicialmente, limite_inferior será 1. limite_superior será 100. Calcularemos el punto medio en cada iteración.
El punto medio se calcula como: punto_medio = (limite_inferior + limite_superior) // 2. Usaremos la división entera (//) para obtener un entero. Este entero será nuestro intento.

Parte 4: El bucle principal
Necesitamos un bucle. Este bucle continuará hasta que adivinemos el número. Dentro del bucle, haremos un intento. Luego recibiremos una pista.
La pista puede ser "mayor", "menor" o "correcto". Si la pista es "mayor", actualizamos limite_inferior. Lo actualizamos a punto_medio + 1. Si la pista es "menor", actualizamos limite_superior. Lo actualizamos a punto_medio - 1.
Si la pista es "correcto", hemos adivinado el número. El bucle termina. Imprimiremos un mensaje de éxito. El programa ha terminado.

Parte 5: Ejemplo de código (pseudocódigo)
Aquí hay un ejemplo de pseudocódigo para ilustrar el algoritmo:
limite_inferior = 1
limite_superior = 100
adivinado = Falso
mientras no adivinado:
punto_medio = (limite_inferior + limite_superior) // 2
imprimir "Mi intento es: " + punto_medio
pista = recibir_pista() // "mayor", "menor" o "correcto"
si pista == "mayor":
limite_inferior = punto_medio + 1
si pista == "menor":
limite_superior = punto_medio - 1
si pista == "correcto":
adivinado = Verdadero
imprimir "¡Adiviné! El número es " + punto_medio

Parte 6: Consideraciones adicionales
Es importante manejar errores. Por ejemplo, ¿qué pasa si la pista es inválida? Podemos agregar validación de entrada. Aseguramos que la pista sea siempre "mayor", "menor" o "correcto".
También podemos limitar el número de intentos. Después de un cierto número de intentos, podemos rendirnos. Esto evita bucles infinitos. Es una buena práctica de programación.
Parte 7: Resumen
Hemos descompuesto el problema en partes manejables. Hemos explicado la estrategia de búsqueda binaria. Hemos proporcionado un pseudocódigo de ejemplo. Hemos considerado errores y límites. Este es un enfoque sistemático para resolver el problema. El algoritmo de búsqueda binaria es clave. Es eficiente y efectivo. Recuerda usar limite_inferior y limite_superior correctamente.