Skip to content

Commit 62c31bc

Browse files
committed
Corrección Roadmap 38 + Nuevo ejercicio 39
1 parent 02c173d commit 62c31bc

File tree

3 files changed

+91
-3
lines changed

3 files changed

+91
-3
lines changed

README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@
2727
2828
## Corrección y próximo ejercicio
2929

30-
> #### Lunes 16 de septiembre de 2024 a las 20:00 (hora España) desde **[Twitch](https://twitch.tv/mouredev)**
31-
> #### Consulta el **[horario](https://discord.gg/8cxgGTxm?event=1280229634524450877)** por país y crea un **[recordatorio](https://discord.gg/8cxgGTxm?event=1280229634524450877)**
30+
> #### Lunes 30 de septiembre de 2024 a las 20:00 (hora España) desde **[Twitch](https://twitch.tv/mouredev)**
31+
> #### Consulta el **[horario](https://discord.gg/Ak6SdZZ8?event=1285336208586833930)** por país y crea un **[recordatorio](https://discord.gg/Ak6SdZZ8?event=1285336208586833930)**
3232
3333
## Roadmap
3434

@@ -72,7 +72,8 @@
7272
|35|[REPARTIENDO LOS ANILLOS DE PODER](./Roadmap/35%20-%20REPARTIENDO%20LOS%20ANILLOS%20DE%20PODER/ejercicio.md)|[📝](./Roadmap/35%20-%20REPARTIENDO%20LOS%20ANILLOS%20DE%20PODER/python/mouredev.py)|[▶️](https://youtu.be/10i2dnaMLj8)|[👥](./Roadmap/35%20-%20REPARTIENDO%20LOS%20ANILLOS%20DE%20PODER/)
7373
|36|[EL SOMBRERO SELECCIONADOR](./Roadmap/36%20-%20EL%20SOMBRERO%20SELECCIONADOR/ejercicio.md)|[📝](./Roadmap/36%20-%20EL%20SOMBRERO%20SELECCIONADOR/python/mouredev.py)|[▶️](https://youtu.be/_UjOD587elY)|[👥](./Roadmap/36%20-%20EL%20SOMBRERO%20SELECCIONADOR/)
7474
|37|[OASIS VS LINKIN PARK](./Roadmap/37%20-%20OASIS%20VS%20LINKIN%20PARK/ejercicio.md)|[📝](./Roadmap/37%20-%20OASIS%20VS%20LINKIN%20PARK/python/mouredev.py)|[▶️](https://youtu.be/q-zBKriHupY)|[👥](./Roadmap/37%20-%20OASIS%20VS%20LINKIN%20PARK/)
75-
|38|[MOUREDEV PRO](./Roadmap/38%20-%20MOUREDEV%20PRO/ejercicio.md)|[🗓️ 23/09/24](https://discord.gg/xeebRweK?event=1283082037917519985)||[👥](./Roadmap/38%20-%20MOUREDEV%20PRO/)
75+
|38|[MOUREDEV PRO](./Roadmap/38%20-%20MOUREDEV%20PRO/ejercicio.md)|[📝](./Roadmap/38%20-%20MOUREDEV%20PRO/python/mouredev.py)||[👥](./Roadmap/38%20-%20MOUREDEV%20PRO/)
76+
|39|[BATMAN DAY](./Roadmap/39%20-%20BATMAN%20DAY/ejercicio.md)|[🗓️ 30/09/24](https://discord.gg/Ak6SdZZ8?event=1285336208586833930)||[👥](./Roadmap/39%20-%20BATMAN%20DAY/)
7677

7778
## Cursos en YouTube
7879

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import os
2+
import csv
3+
import random
4+
5+
6+
def read_csv_data() -> list:
7+
8+
file_dir = os.path.dirname(os.path.abspath(__file__))
9+
csv_file = f"{file_dir}/subs.csv"
10+
11+
data = []
12+
13+
with open(csv_file, mode="r") as file:
14+
reader = csv.DictReader(file)
15+
for row in reader:
16+
if row["status"] == "activo":
17+
data.append(row)
18+
19+
return data
20+
21+
22+
def select_winners(data: list) -> list:
23+
24+
if len(data) < 3:
25+
raise ValueError("El número de elementos debe ser mínimo 3.")
26+
27+
return random.sample(data, 3)
28+
29+
30+
def display_winners(winners):
31+
prizes = ["Suscripción", "Descuento", "Libro"]
32+
for winner, prize in zip(winners, prizes):
33+
print(f"{prize}: {winner["email"]} (ID: {winner["id"]})")
34+
35+
36+
try:
37+
data = read_csv_data()
38+
winners = select_winners(data)
39+
display_winners(winners)
40+
except Exception as e:
41+
print(e)

Roadmap/39 - BATMAN DAY/ejercicio.md

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
# #39 BATMAN DAY
2+
> #### Dificultad: Media | Publicación: 23/09/24 | Corrección: 30/09/24
3+
4+
## Ejercicio
5+
6+
```
7+
/*
8+
* EJERCICIO:
9+
* Cada año se celebra el Batman Day durante la tercera semana de septiembre...
10+
* ¡Y este año cumple 85 años! Te propongo un reto doble:
11+
*
12+
* RETO 1:
13+
* Crea un programa que calcule cuándo se va a celebrar el Batman Day hasta
14+
* su 100 aniversario.
15+
*
16+
* RETO 2:
17+
* Crea un programa que implemente el sistema de seguridad de la Batcueva.
18+
* Este sistema está diseñado para monitorear múltiples sensores distribuidos
19+
* por Gotham, detectar intrusos y activar respuestas automatizadas.
20+
* Cada sensor reporta su estado en tiempo real, y Batman necesita un programa
21+
* que procese estos datos para tomar decisiones estratégicas.
22+
* Requisitos:
23+
* - El mapa de Gotham y los sensores se representa con una cuadrícula 20x20.
24+
* - Cada sensor se identifica con una coordenada (x, y) y un nivel
25+
* de amenaza entre 0 a 10 (número entero).
26+
* - Batman debe concentrar recursos en el área más crítica de Gotham.
27+
* - El programa recibe un listado de tuplas representando coordenadas de los
28+
* sensores y su nivel de amenaza. El umbral de activación del protocolo de
29+
* seguridad es 20 (sumatorio de amenazas en una cuadrícula 3x3).
30+
* Acciones:
31+
* - Identifica el área con mayor concentración de amenazas
32+
* (sumatorio de amenazas en una cuadrícula 3x3).
33+
* - Si el sumatorio de amenazas es mayor al umbral, activa el
34+
* protocolo de seguridad.
35+
* - Calcula la distancia desde la Batcueva, situada en (0, 0). La distancia es
36+
* la suma absoluta de las coordenadas al centro de la cuadrícula amenazada.
37+
* - Muestra la coordenada al centro de la cuadrícula más amenazada, la suma de
38+
* sus amenazas, la distancia a la Batcueva y si se debe activar el
39+
* protocolo de seguridad.
40+
*/
41+
```
42+
#### Tienes toda la información extendida sobre el roadmap de retos de programación en **[retosdeprogramacion.com/roadmap](https://retosdeprogramacion.com/roadmap)**.
43+
44+
Sigue las **[instrucciones](../../README.md)**, consulta las correcciones y aporta la tuya propia utilizando el lenguaje de programación que quieras.
45+
46+
> Recuerda que cada semana se publica un nuevo ejercicio y se corrige el de la semana anterior en directo desde **[Twitch](https://twitch.tv/mouredev)**. Tienes el horario en la sección "eventos" del servidor de **[Discord](https://discord.gg/mouredev)**.

0 commit comments

Comments
 (0)