Skip to content

Commit e5b3810

Browse files
authored
Merge pull request mouredev#7224 from Teren91/main
mouredev#47 - Typescript
2 parents 3da33bd + 7b164aa commit e5b3810

File tree

1 file changed

+119
-0
lines changed
  • Roadmap/47 - CALENDARIO DE ADVIENTO/typescript

1 file changed

+119
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
/*
2+
* EJERCICIO:
3+
* ¡Cada año celebramos el aDEViento! 24 días, 24 regalos para
4+
* developers. Del 1 al 24 de diciembre: https://adviento.dev
5+
*
6+
* Dibuja un calendario por terminal e implementa una
7+
* funcionalidad para seleccionar días y mostrar regalos.
8+
* - El calendario mostrará los días del 1 al 24 repartidos
9+
* en 6 columnas a modo de cuadrícula.
10+
* - Cada cuadrícula correspondiente a un día tendrá un tamaño
11+
* de 4x3 caracteres, y sus bordes serán asteríscos.
12+
* - Las cuadrículas dejarán un espacio entre ellas.
13+
* - En el medio de cada cuadrícula aparecerá el día entre el
14+
* 01 y el 24.
15+
*
16+
* Ejemplo de cuadrículas:
17+
* **** **** ****
18+
* *01* *02* *03* ...
19+
* **** **** ****
20+
*
21+
* - El usuario seleccioná qué día quiere descubrir.
22+
* - Si está sin descubrir, se le dirá que ha abierto ese día
23+
* y se mostrará de nuevo el calendario con esa cuadrícula
24+
* cubierta de asteríscos (sin mostrar el día).
25+
*
26+
* Ejemplo de selección del día 1
27+
* **** **** ****
28+
* **** *02* *03* ...
29+
* **** **** ****
30+
*
31+
* - Si se selecciona un número ya descubierto, se le notifica
32+
* al usuario.
33+
*/
34+
import * as promptSync from "prompt-sync";
35+
36+
const prompt = promptSync();
37+
38+
39+
function calendario() {
40+
var dia: number = 0;
41+
var calendario: string = "";
42+
var opcion: string | null = "";
43+
var diaElegido: number = 0;
44+
var diasRegalos: number[] = [];
45+
46+
while(opcion != "salir")
47+
{
48+
opcion = prompt("¿Qué día quieres descubrir? (1-24). Escribe 'salir' para salir del programa: ");
49+
50+
if(opcion == null)
51+
{
52+
console.log("No has introducido ninguna opción, por favor intentalo de nuevo.");
53+
continue;
54+
}
55+
if(opcion == "salir")
56+
{
57+
console.log("Hasta pronto!");
58+
break;
59+
}
60+
61+
diaElegido = parseInt(opcion);
62+
63+
if(isNaN(diaElegido)){
64+
console.log("No has introducido ninguna opción, por favor intentalo de nuevo.");
65+
continue;
66+
}
67+
68+
if(diaElegido < 1 || diaElegido > 24){
69+
console.log("El día no es correcto, por favor intentalo de nuevo.");
70+
continue;
71+
}
72+
73+
if(diasRegalos.includes(diaElegido)){
74+
console.log("Ya has descubierto ese día, por favor intentalo de nuevo.");
75+
continue;
76+
}
77+
78+
diasRegalos.push(diaElegido);
79+
80+
console.log("Enhorabuena!! Has descubierto el día " + diaElegido);
81+
82+
dia = 0;
83+
calendario = "";
84+
for (let i = 0; i < 4; i++) {
85+
//Inicio del calendario
86+
for(let j = 0; j < 6; j++) {
87+
calendario += "".repeat(j) + "*".repeat(4) + " ";
88+
}
89+
90+
calendario += "\n";
91+
for(let j = 0; j < 6; j++) {
92+
dia++;
93+
if(diasRegalos.includes(dia))
94+
{
95+
calendario += "**** ";
96+
}else
97+
{
98+
if(dia < 10)
99+
{
100+
calendario += "*" + "".padStart(1, "0") + dia + "* " ;
101+
}
102+
else{
103+
calendario += "*" + dia + "* ";
104+
}
105+
}
106+
}
107+
calendario += "\n"
108+
}
109+
//Cierre del calendario
110+
for(let j = 0; j < 6; j++) {
111+
calendario += "".repeat(j) + "*".repeat(4) + " ";
112+
}
113+
114+
calendario += "\n";
115+
console.log(calendario);
116+
}
117+
}
118+
119+
calendario();

0 commit comments

Comments
 (0)