|
| 1 | +""" * EJERCICIO: |
| 2 | + * ¡La temporada 2 de "Los Anillos de Poder" está a punto de estrenarse! |
| 3 | + * ¿Qué pasaría si tuvieras que encargarte de repartir los anillos |
| 4 | + * entre las razas de la Tierra Media? |
| 5 | + * Desarrolla un programa que se encargue de distribuirlos. |
| 6 | + * Requisitos: |
| 7 | + * 1. Los Elfos recibirán un número impar. |
| 8 | + * 2. Los Enanos un número primo. |
| 9 | + * 3. Los Hombres un número par. |
| 10 | + * 4. Sauron siempre uno. |
| 11 | + * Acciones: |
| 12 | + * 1. Crea un programa que reciba el número total de anillos |
| 13 | + * y busque una posible combinación para repartirlos. |
| 14 | + * 2. Muestra el reparto final o el error al realizarlo. |
| 15 | +""" |
| 16 | + |
| 17 | +from random import randint |
| 18 | + |
| 19 | +def is_prime(number:int): |
| 20 | + if number ==1: #en el caso de este programa, el número nunca podrá ser 0. En otro caso habría que evaluar number < 2 |
| 21 | + return False |
| 22 | + else: |
| 23 | + for index in range(2,int(number**0.5)+1): #se evalúan valores desde 2 hasta la raíz cuadrada del número |
| 24 | + if number % index == 0: # y si la división entre el número y alguno de esos valorers tien resto 0 |
| 25 | + return False #entonces no es un número primo. |
| 26 | + return True |
| 27 | + |
| 28 | +def is_odd(number:int): |
| 29 | + return number % 2 != 0 |
| 30 | + |
| 31 | +def is_even(number:int): |
| 32 | + return number %2 == 0 |
| 33 | + |
| 34 | +THE_ONE_RING = 1 |
| 35 | +print("Te doy la bienvenida al programa de reparto de LOS ANILLOS DE PODER") |
| 36 | +rings = int(input("Dime el número de Anillos de Poder a Repartir: ")) |
| 37 | +#rings = 9 |
| 38 | +if rings <= 5: |
| 39 | + print("No hay suficientes anillos para repartir") |
| 40 | +else: |
| 41 | + sauron = THE_ONE_RING |
| 42 | + while True: |
| 43 | + rings_aux = rings-sauron |
| 44 | + men = randint(1,rings_aux) |
| 45 | + if is_even(men): |
| 46 | + rings_aux -= men |
| 47 | + if rings_aux >= 3: |
| 48 | + dwarven = randint(1,rings_aux) |
| 49 | + if is_prime(dwarven): |
| 50 | + rings_aux -= dwarven |
| 51 | + |
| 52 | + if rings_aux > 0: |
| 53 | + elven = rings_aux |
| 54 | + if is_odd(elven): |
| 55 | + if sauron+men+dwarven+elven == rings: |
| 56 | + print("LOS ANILLOS SE HAN REPARTIDO CORRECTAMENTE") |
| 57 | + print(f"TOTAL DE ANILLOS: {rings}\n- SAURON: {sauron}\n- HOMBRES: {men}\n- ENANOS: {dwarven}\n- ELFOS: {elven}") |
| 58 | + break |
0 commit comments