#1
* Escribe un programa que imprima los 50 primeros números de la sucesión de Fibonacci empezando en 0.
- La serie Fibonacci se compone por una sucesión de números en la que el siguiente siempre es la suma de los dos anteriores.
0, 1, 1, 2, 3, 5, 8, 13...50
#2
* Crea una función que calcule y retorne cuántos días hay entre dos cadenas de texto que representen fechas.
- Una cadena de texto que representa una fecha tiene el formato "dd/MM/yyyy".
- La función recibirá dos String y retornará un Int.
- La diferencia en días será absoluta (no importa el orden de las fechas).
- Si una de las dos cadenas de texto no representa una fecha correcta se lanzará una excepción.
#3
* Crea una función que evalúe si un/a atleta ha superado correctamente una
* carrera de obstáculos.
- La función recibirá dos parámetros:
- Un array que sólo puede contener String con las palabras"run" o "jump"
- Un String que represente la pista y sólo puede contener "_" (suelo) o "|" (valla)
- La función imprimirá cómo ha finalizado la carrera:
- Si el/a atleta hace "run" en "_" (suelo) y "jump" en "|" (valla) será correcto y no variará el símbolo de esa parte de la pista.
- Si hace "jump" en "_" (suelo), se variará la pista por "x".
- Si hace "run" en "|" (valla), se variará la pista por "/".
- La función retornará un Boolean que indique si ha superado la carrera. Para ello tiene que realizar la opción correcta en cada tramo de la pista.
#4
* Crea una función que analice una matriz 3x3 compuesta por "X" y "O"
* y retorne lo siguiente:
- "X" si han ganado las "X"
- "O" si han ganado los "O"
- "Empate" si ha habido un empate
- "Nulo" si la proporción de "X", de "O", o de la matriz no es correcta.
- O si han ganado los 2.
* Nota: La matriz puede no estar totalmente cubierta.
* Se podría representar con un vacío "", por ejemplo.
#5
* Simula el funcionamiento de una máquina expendedora creando una operación que reciba dinero (array de monedas) y un número que indique la selección del producto.
- El programa retornará el nombre del producto y un array con el dinero de vuelta (con el menor número de monedas).
- Si el dinero es insuficiente o el número de producto no existe, deberá indicarse con un mensaje y retornar todas las monedas.
- Si no hay dinero de vuelta, el array se retornará vacío.
- Para que resulte más simple, trabajaremos en céntimos con monedas de 5, 10, 50, 100 y 200.
- Debemos controlar que las monedas enviadas estén dentro de las soportadas.
#6
* Crea un programa que calcule el daño de un ataque durante una batalla Pokémon.
- La fórmula será la siguiente: daño = 50 * (ataque / defensa) * efectividad
- Efectividad: x2 (súper efectivo), x1 (neutral), x0.5 (no es muy efectivo)
- Sólo hay 4 tipos de Pokémon: Agua, Fuego, Planta y Eléctrico (buscar su efectividad)
- El programa recibe los siguientes parámetros:
- Tipo del Pokémon atacante.
- Tipo del Pokémon defensor.
- Ataque: Entre 1 y 100.
- Defensa: Entre 1 y 100.
#7
*¡La Tierra Media está en guerra! En ella lucharán razas leales
a Sauron contra otras bondadosas que no quieren que el mal reine sobre sus tierras.
Cada raza tiene asociado un "valor" entre 1 y 5:
- Razas bondadosas: Pelosos (1), Sureños buenos (2), Enanos (3), Númenóreanos (4), Elfos (5)
- Razas malvadas: Sureños malos (2), Orcos (2), Goblins (2), Huargos (3), Trolls (5)
Crea un programa que calcule el resultado de la batalla entre
los 2 tipos de ejércitos:
- El resultado puede ser que gane el bien, el mal, o exista un empate.
Dependiendo de la suma del valor del ejército y el número de integrantes.
- Cada ejército puede estar compuesto por un número de integrantes variable de cada raza.
- Tienes total libertad para modelar los datos del ejercicio.
Ej: 1 Peloso pierde contra 1 Orco
2 Pelosos empatan contra 1 Orco
3 Pelosos ganan a 1 Orco
#8
* ¿Conoces el calendario de adviento de la comunidad (https://adviento.dev)? 24 días, 24 regalos sorpresa relacionados con desarrollo de software, ciencia y tecnología desde el 1 de diciembre.
Enunciado: Crea una función que reciba un objeto de tipo "Date" y retorne lo siguiente:
- Si la fecha coincide con el calendario de aDEViento 2022: Retornará el regalo de ese día (a tu elección) y cuánto queda para que finalice el sorteo de ese día.
- Si la fecha es anterior: Cuánto queda para que comience el calendario.
- Si la fecha es posterior: Cuánto tiempo ha pasado desde que ha finalizado.
* Notas:
- Tenemos en cuenta que cada día del calendario comienza a medianoche 00:00:00 y finaliza a las 23:59:59.
- Debemos trabajar con fechas que tengan año, mes, día, horas, minutos y segundos.
#9
* Crea un pequeño juego que consista en adivinar palabras en un número máximo de intentos:
- El juego comienza proponiendo una palabra aleatoria incompleta
- Por ejemplo "m_ur_d_v", y el número de intentos que le quedan
- El usuario puede introducir únicamente una letra o una palabra (de la misma longitud que la palabra a adivinar)
- Si escribe una letra y acierta, se muestra esa letra en la palabra. Si falla, se resta uno al número de intentos
- Si escribe una resolución y acierta, finaliza el juego, en caso contrario, se resta uno al número de intentos
- Si el contador de intentos llega a 0, el jugador pierde La palabra debe ocultar de forma aleatoria letras, y nunca puede comenzar ocultando más del 60%
- Puedes utilizar las palabras que quieras y el número de intentos que consideres.
#10
* Crea un programa que encuentre y muestre todos los pares de números primos gemelos en un rango concreto.
El programa recibirá el rango máximo como número entero positivo.
- Un par de números primos se considera gemelo si la diferencia entre ellos es exactamente 2. Por ejemplo (3, 5), (11, 13)
- Ejemplo: Rango 14 (3, 5), (5, 7), (11, 13)
#11
* Crea un programa que detecte cuando el famoso "Código Konami" se ha introducido correctamente desde el teclado.
* Si sucede esto, debe notificarse mostrando un mensaje en la terminal.
#12
* Crea una función que reciba dos parámetros para crear una cuenta atrás.
- El primero, representa el número en el que comienza la cuenta.
- El segundo, los segundos que tienen que transcurrir entre cada cuenta.
- Sólo se aceptan números enteros positivos.
- El programa finaliza al llegar a cero.
- Debes imprimir cada número de la cuenta atrás.
#13
* Crea una función que reciba una expresión matemática (String) y compruebe si es correcta. Retornará true o false.
- Para que una expresión matemática sea correcta debe poseer un número, una operación y otro número separados por espacios. Tantos números y operaciones como queramos.
- Números positivos, negativos, enteros o decimales.
- Operaciones soportadas: + - * / %
* Ejemplos:
"5 + 6 / 7 - 4" -> true
"5 a 6" -> false
#14
* Crea una función que calcule el punto de encuentro de dos objetos en movimiento en dos dimensiones.
- Cada objeto está compuesto por una coordenada xy y una velocidad de desplazamiento (vector de desplazamiento) por unidad de tiempo (también en formato xy).
- La función recibirá las coordenadas de inicio de ambos objetos y sus velocidades.
- La función calculará y mostrará el punto en el que se encuentran y el tiempo que tardarn en lograrlo.
- La función debe tener en cuenta que los objetos pueden no llegar a encontrarse.
#15
* Crea una función que simule las condiciones climáticas (temperatura y probabilidad de lluvia) de un lugar ficticio al pasar un número concreto de días según estas reglas:
- La temperatura inicial y el % de probabilidad de lluvia lo define el usuario.
- Cada día que pasa:
- 10% de posibilidades de que la temperatura aumente o disminuya 2 grados.
- Si la temperatura supera los 25 grados, la probabilidad de lluvia al día siguiente aumenta en un 20%.
- Si la temperatura baja de 5 grados, la probabilidad de lluvia al día
siguiente disminuya en un 20%.
- Si llueve (100%), la temperatura del día siguiente disminuye en 1 grado.
- La función recibe el número de días de la predicción y muestra la temperatura y si llueve durante todos esos días.
- También mostrará la temperatura máxima y mínima de ese periodo y cuántos días va a llover.