Boletín 303. Ejercicios variados
En este boletín se nos presentan diferentes problemas que tendremos que solucionar en Java con todo lo visto hasta el momento.
Ejercicios
Ejercicio 1. El matemático indio Dattatreya Ramachandra Kaprekar descubrió en 1949 una curiosa característica del número 6174. Este número se conoce como constante de Kaprekar en su honor.
Este número tiene la siguiente propiedad:
- Elige un número de cuatro dígitos que tenga, al menos, dos diferentes. Es válido colocar el dígito 0 al principio, por lo que el número 0009 es válido.
- Coloca sus dígitos en orden ascendente y en orden descendente para formar dos nuevos números. Puedes añadir los dígitos 0 que necesites al principio.
- Resta el menor al mayor.
- Vuelve al paso 2.
Este proceso se conoce como la rutina Kaprekar, y siempre llegará al número 6174 en como mucho 7 iteraciones. Una vez que el resultado de la operación del paso 3 dé ese número, el proceso parará.
Por ejemplo, el número 3542 alcanzará la constante de Kaprekar en 3 iteraciones:
5432 − 2345 = 3087
8730 − 0378 = 8352
8532 − 2358 = 6174
Los únicos dígitos de cuatro cifras para los que la rutina no alcanza este número son los repdigits, es decir, aquellos en los que sus cuatro cifras son iguales (como 1111), pues en la primera iteración se alcanzará el valor 0 y ya no se puede salir de él. Por eso se pide en el paso 1 explícitamente que el número inicial tuviera al menos dos dígitos diferentes.
Aquí tienes dos ejemplos más:
2111 − 1112 = 0999
9990 − 0999 = 8991
9981 − 1899 = 8082
8820 − 0288 = 8532
8532 − 2358 = 6174
9831 − 1389 = 8442
8442 − 2448 = 5994
9954 − 4599 = 5355
5553 − 3555 = 1998
9981 − 1899 = 8082
8820 − 0288 = 8532
8532 − 2358 = 6174
Crea un programa en Java que reciba un número e indique el número de iteraciones necesarias para calcular la constante de Kaprekar. Para los números repdigits se deberá indicar -1, y si se introduce la constante de Kaprekar se deberá indicar 0.
Ejercicio 2. El revisor de una empresa turística de autobuses de dos pisos debe revisar todos los autobuses que salen de la parada inicial a lo largo del día y comunicar a la central cuántos turistas hay en el piso superior y cuántos en el inferior.
El revisor, cansado de estos repetitivos mensajes pensó en un método más compacto para describir los turistas que hay en cada piso: en lugar de transmitir las cantidades, transmite un número único (denominado ocupación e indicado en colo negro en el esquema) que resume la ocupación del autobús. Para ello, utiliza el siguiente esquema:

Crea un programa en Java que calcule la ocupación, es decir, obtener la cifra negra (valor entre 1 y 10) a partir de los valores de las cifras blancas del esquema. Primero se indicarán los turistas del piso superior y, a continuación, los turistas del piso inferior. No se deben permitir más de 3 turistas por piso.
Ejercicio 3. Wordle es un popular juego de adivinanzas de palabras que reta a los jugadores a encontrar una palabra secreta de cinco letras en seis intentos o menos. Cada vez que el jugador introduce una palabra, el juego señala si las letras están correctas y en la posición adecuada (marcándolas en verde), si están en la palabra pero en la posición incorrecta (amarillo) o si no están en la palabra (gris).
Implementa en Java el juego Worldle. Utiliza una lista de 20 palabras posibles de longitud 5 caracteres. Si una vocal de la palabra tiene una tilde y el jugador introduce la vocal sin tilde, se debe dar por válida, pero en el resultado se debe mostrar con la tilde.
Ejercicio 4. Crea un programa en Java que simule un inventario básico para una tienda con 5 productos. Guarda los nombres en un array de cadenas y las unidades disponibles en un array paralelo de enteros.
El programa deberá permitir:
- Mostrar todos los productos y su stock.
- Preguntar al usuario el nombre de un producto y la cantidad que desea comprar.
- Comprobar si hay suficiente stock:
- Si lo hay, descontar la cantidad y mostrar el nuevo stock.
- Si no lo hay, mostrar un mensaje de error.
- Al final, mostrar el valor total de unidades restantes.
NOTA: Usa bucles para recorrer los arrays y comparaciones de texto para localizar productos.