Skip to content

Commit 4bf1c9f

Browse files
Merge branch 'mouredev:main' into main
2 parents 2fd1912 + 115dfde commit 4bf1c9f

File tree

3 files changed

+97
-3
lines changed

3 files changed

+97
-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 2 de diciembre de 2024 a las 20:00 (hora España) desde **[Twitch](https://twitch.tv/mouredev)**
31-
> #### Consulta el **[horario](https://discord.gg/mtHpG4md?event=1308551460644065330)** por país y crea un **[recordatorio](https://discord.gg/mtHpG4md?event=1308551460644065330)**
30+
> #### Lunes 9 de diciembre de 2024 a las 20:00 (hora España) desde **[Twitch](https://twitch.tv/mouredev)**
31+
> #### Consulta el **[horario](https://discord.gg/mtHpG4md?event=1310726079039799438)** por país y crea un **[recordatorio](https://discord.gg/mtHpG4md?event=1310726079039799438)**
3232
3333
## Roadmap
3434

@@ -81,7 +81,8 @@
8181
|44|[CUENTA ATRÁS MOUREDEV PRO](./Roadmap/44%20-%20CUENTA%20ATRÁS%20MOUREDEV%20PRO/ejercicio.md)|[📝](./Roadmap/44%20-%20CUENTA%20ATRÁS%20MOUREDEV%20PRO/python/mouredev.py)|[▶️](https://youtu.be/9wsXz4K8Q-4)|[👥](./Roadmap/44%20-%20CUENTA%20ATRÁS%20MOUREDEV%20PRO/)
8282
|45|[GITHUB OCTOVERSE](./Roadmap/45%20-%20GITHUB%20OCTOVERSE/ejercicio.md)|[📝](./Roadmap/45%20-%20GITHUB%20OCTOVERSE/python/mouredev.py)|[▶️](https://youtu.be/yj5ZFT_Xmcs)|[👥](./Roadmap/45%20-%20GITHUB%20OCTOVERSE/)
8383
|46|[X VS BLUESKY](./Roadmap/46%20-%20X%20VS%20BLUESKY/ejercicio.md)|[📝](./Roadmap/46%20-%20X%20VS%20BLUESKY/python/mouredev.py)|[▶️](https://youtu.be/RzwFGihKpOM)|[👥](./Roadmap/46%20-%20X%20VS%20BLUESKY/)
84-
|47|[CALENDARIO DE ADVIENTO](./Roadmap/47%20-%20CALENDARIO%20DE%20ADVIENTO/ejercicio.md)|[🗓️ 02/12/24](https://discord.gg/mtHpG4md?event=1308551460644065330)||[👥](./Roadmap/47%20-%20CALENDARIO%20DE%20ADVIENTO/)
84+
|47|[CALENDARIO DE ADVIENTO](./Roadmap/47%20-%20CALENDARIO%20DE%20ADVIENTO/ejercicio.md)|[📝](./Roadmap/47%20-%20CALENDARIO%20DE%20ADVIENTO/python/mouredev.py)||[👥](./Roadmap/47%20-%20CALENDARIO%20DE%20ADVIENTO/)
85+
|48|[ÁRBOL DE NAVIDAD](./Roadmap/48%20-%20ÁRBOL%20DE%20NAVIDAD/ejercicio.md)|[🗓️ 09/12/24](https://discord.gg/mtHpG4md?event=1310726079039799438)||[👥](./Roadmap/48%20-%20ÁRBOL%20DE%20NAVIDAD/)
8586

8687
## Cursos en YouTube
8788

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
import calendar
2+
3+
4+
class AdventCalendar:
5+
6+
def __init__(self):
7+
self.days = [False] * 24
8+
9+
def display(self):
10+
11+
for row in range(0, 24, 6):
12+
13+
print("**** " * 6)
14+
print(
15+
" ".join([f"*{str(day).zfill(2)}*" if not self.days[day - 1] else "****" for day in range(row + 1, row + 7)]))
16+
print("**** " * 6)
17+
print()
18+
19+
def select(self, day):
20+
21+
is_digit = day.isdigit()
22+
23+
if is_digit and int(day) > 0 and int(day) <= 24:
24+
day = int(day)
25+
26+
if self.days[day - 1]:
27+
print(
28+
f"El día {day} ya está descubierto. Selecciona otro diferente.")
29+
else:
30+
self.days[day - 1] = True
31+
print(f"Has abierto el día {day}.")
32+
33+
else:
34+
print("Selección inválida. Debes introducir un número entre 1 y 24.")
35+
36+
37+
advent_calendar = AdventCalendar()
38+
39+
while True:
40+
41+
advent_calendar.display()
42+
43+
selection = input(
44+
"Selecciona el día que quieres descubrir (o escribe 'salir' para finalizar): ")
45+
46+
if selection.lower() == "salir":
47+
print("Finalizando el calendario de adviento... ¡Felices fiestas!")
48+
break
49+
50+
advent_calendar.select(selection)
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# #48 ÁRBOL DE NAVIDAD
2+
> #### Dificultad: Media | Publicación: 02/12/24 | Corrección: 09/12/24
3+
4+
## Ejercicio
5+
6+
```
7+
/*
8+
* EJERCICIO:
9+
* ¡Ha comenzado diciembre! Es hora de montar nuestro
10+
* árbol de Navidad...
11+
*
12+
* Desarrolla un programa que cree un árbol de Navidad
13+
* con una altura dinámica definida por el usuario por terminal.
14+
*
15+
* Ejemplo de árbol de altura 5 (el tronco siempre será igual):
16+
*
17+
* *
18+
* ***
19+
* *****
20+
* *******
21+
* *********
22+
* |||
23+
* |||
24+
*
25+
* El usuario podrá seleccionar las siguientes acciones:
26+
*
27+
* - Añadir o eliminar la estrella en la copa del árbol (@)
28+
* - Añadir o eliminar bolas de dos en dos (o) aleatoriamente
29+
* - Añadir o eliminar luces de tres en tres (+) aleatoriamente
30+
* - Apagar (*) o encender (+) las luces (conservando su posición)
31+
* - Una luz y una bola no pueden estar en el mismo sitio
32+
*
33+
* Sólo puedes añadir una estrella, y tantas luces o bolas
34+
* como tengan cabida en el árbol. El programa debe notificar
35+
* cada una de las acciones (o por el contrario, cuando no
36+
* se pueda realizar alguna).
37+
*/
38+
```
39+
#### Tienes toda la información extendida sobre el roadmap de retos de programación en **[retosdeprogramacion.com/roadmap](https://retosdeprogramacion.com/roadmap)**.
40+
41+
Sigue las **[instrucciones](../../README.md)**, consulta las correcciones y aporta la tuya propia utilizando el lenguaje de programación que quieras.
42+
43+
> 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)