Skip to content

Commit 34faf70

Browse files
committed
Readme edits, js updated
1 parent 985dd7b commit 34faf70

40 files changed

+2389
-911
lines changed

Reto_01/README.md

+85-38
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,85 @@
1-
## AdventJS Challenges
2-
3-
![adventJs](./Assets/Portada.jpg)
4-
5-
## <img src="https://adventjs.dev/android-icon-192x192.png" width="20" height="20" /> <strong> [adventJS](https://adventjs.dev/es) es una iniciativa de [@midudev](https://midu.dev/)</strong>
6-
7-
## Retos
8-
9-
| Reto | Título | Solución | Puntos |
10-
| ---- | ---------------------------------------------------------------------------------------------- | ------------------------------ | ------ |
11-
| #01 | [¡Automatizando envolver regalos de navidad!](https://adventjs.dev/es/challenges/2022/1) | [Ver solución](./challenge01/) | 131 |
12-
| #02 | [Nadie quiere hacer horas extra](https://adventjs.dev/es/challenges/2022/2) | [Ver solución](./challenge02/) | 121 |
13-
| #03 | [¿Cuántas cajas de regalos puede llevar Papá Noel?](https://adventjs.dev/es/challenges/2022/3) | [Ver solución](./challenge03/) | 165 |
14-
| #04 | [Una caja dentro de otra caja y otra...](https://adventjs.dev/es/challenges/2022/4) | [Ver solución](./challenge04/) | 172 |
15-
| #05 | [Optimizando viajes de Santa](https://adventjs.dev/es/challenges/2022/5) | [Ver solución](./challenge05/) | 140 |
16-
| #06 | [Creando adornos navideños](https://adventjs.dev/es/challenges/2022/6) | [Ver solución](./challenge06/) | 160 |
17-
| #07 | [Haciendo inventario de regalos](https://adventjs.dev/es/challenges/2022/7) | [Ver solución](./challenge07/) | 400 |
18-
| #08 | [¡Necesitamos un mecánico!](https://adventjs.dev/es/challenges/2022/8) | [Ver solución](./challenge08/) | 240 |
19-
| #09 | [Las locas luces de Navidad](https://adventjs.dev/es/challenges/2022/9) | [Ver solución](./challenge09/) | 300 |
20-
| #10 | [El salto del trineo de Papá Noel](https://adventjs.dev/es/challenges/2022/10) | [Ver solución](./challenge10/) | 260 |
21-
| #11 | [Papá Noel es Scrum Master](https://adventjs.dev/es/challenges/2022/11) | [Ver solución](./challenge11/) | 260 |
22-
| #12 | [Trineos eléctricos, ¡guau!](https://adventjs.dev/es/challenges/2022/12) | [Ver solución](./challenge12/) | 400 |
23-
| #13 | [Backup de los archivos de Papá Noel](https://adventjs.dev/es/challenges/2022/13) | [Ver solución](./challenge13/) | 300 |
24-
| #14 | [El mejor camino](https://adventjs.dev/es/challenges/2022/14) | [Ver solución](./challenge14/) | 300 |
25-
| #15 | [Decorando el árbol de Navidad](https://adventjs.dev/es/challenges/2022/15) | [Ver solución](./challenge15/) | 260 |
26-
| #16 | [Arreglando las cartas de Papá Noel](https://adventjs.dev/es/challenges/2022/16) | [Ver solución](./challenge16/) | 300 |
27-
| #17 | [Llevando los regalos en sacos](https://adventjs.dev/es/challenges/2022/17) | [Ver solución](./challenge17/) | 260 |
28-
| #18 | [¡Nos quedamos sin tinta!](https://adventjs.dev/es/challenges/2022/18) | [Ver solución](./challenge18/) | 200 |
29-
| #19 | [Ordenando los regalos](https://adventjs.dev/es/challenges/2022/19) | [Ver solución](./challenge19/) | 400 |
30-
| #20 | [Más viajes retadores](https://adventjs.dev/es/challenges/2022/20) | [Ver solución](./challenge20/) | 10 |
31-
| #21 | [Creando la tabla de regalos](https://adventjs.dev/es/challenges/2022/21) | [Ver solución](./challenge21/) | 300 |
32-
| #22 | [La iluminación en sintonía](https://adventjs.dev/es/challenges/2022/22) | [Ver solución](./challenge22/) | 400 |
33-
| #23 | [Compilador de Papá Noel](https://adventjs.dev/es/challenges/2022/23) | [Ver solución](./challenge23/) | 10 |
34-
| #24 | | | |
35-
36-
## Tests
37-
38-
Cada challenge viene con su propio test basado en los test visibles de la cada reto, para ejecutarlos se necesita entrar aen la carpeta correspondiente de cada challenge y ejecutar `npm install`, luego `npm run test` para correr los test del correspondiente challenge.
1+
# [Reto #1: ¡Automatizando envolver regalos de navidad!](https://adventjs.dev/es/challenges/2022/1)
2+
3+
![Reto_01](../Assets/Retos_SVG/1.svg)
4+
5+
Este año los elfos han comprado una máquina que envuelve regalos. Pero… ¡no viene programada! Necesitamos crear un algoritmo que le ayude en la tarea.
6+
7+
A la máquina se le pasa un array con los regalos. Cada regalo es un string. Necesitamos que la máquina envuelva cada regalo en papel de regalo y lo coloque en un array de regalos envueltos.
8+
9+
El papel de regalo es el símbolo `*` y para envolver un regalo se coloca el símbolo `*` de forma que rodee totalmente al string por todos los lados. Por ejemplo:
10+
11+
```js
12+
const gifts = ['cat', 'game', 'socks'];
13+
const wrapped = wrapping(gifts);
14+
15+
console.log(wrapped);
16+
/* [
17+
"*****\\n*cat*\\n*****",
18+
"******\\n*game*\\n******",
19+
"*******\\n*socks*\\n*******"
20+
] */
21+
```
22+
23+
Como ves, el papel de regalo envuelve el string. Por arriba y por abajo, para no dejar ningún hueco, las esquinas también están cubiertas por el papel de regalo.
24+
25+
<strong style="color:rgb(250 202 2)">Nota:</strong> El carácter `\n` representa un salto de línea.
26+
27+
<strong style="color:rgb(250 202 2)">¡Ojo!</strong> Asegúrate que pones el número correcto de \* para envolver completamente el string. Pero no demasiados. Sólo los necesarios para cubrir el string.
28+
29+
Ah, <strong style="color:rgb(250 202 2)">y no modifiques (mutes) el array original.</strong>
30+
31+
---
32+
33+
## Resultados
34+
35+
### Test #01
36+
37+
```js
38+
Test: return type;
39+
40+
Expected: 'array';
41+
42+
Actual: 'array';
43+
```
44+
45+
### Test #02
46+
47+
```js
48+
Test: wrapping(gifts);
49+
50+
Expected: ['*****\n*cat*\n*****', '******\n*game*\n******', '*******\n*socks*\n*******'];
51+
52+
Actual: ['*****\n*cat*\n*****', '******\n*game*\n******', '*******\n*socks*\n*******'];
53+
```
54+
55+
### Test #03
56+
57+
```js
58+
Test: wrapping(['midu']);
59+
60+
Expected: ['******\n*midu*\n******'];
61+
62+
Actual: ['******\n*midu*\n******'];
63+
```
64+
65+
### Test #04
66+
67+
```js
68+
Test: wrapping(['a']);
69+
70+
Expected: ['***\n*a*\n***'];
71+
72+
Actual: ['***\n*a*\n***'];
73+
```
74+
75+
### Test #05
76+
77+
```js
78+
Test: wrapping an empty array should return an empty array
79+
80+
Expected:
81+
[]
82+
83+
Actual:
84+
[]
85+
```

Reto_01/index.js

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
function wrapping(gifts) {
2+
let newArr = [];
3+
let repeat = 0;
4+
5+
for (let i = 0; i < gifts.length; i++) {
6+
repeat = gifts[i].length + 2;
7+
newArr.push('*'.repeat(repeat) + '\n*' + gifts[i] + '*\n' + '*'.repeat(repeat));
8+
}
9+
10+
return newArr;
11+
}

Reto_02/README.md

+82-38
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,82 @@
1-
## AdventJS Challenges
2-
3-
![adventJs](./Assets/Portada.jpg)
4-
5-
## <img src="https://adventjs.dev/android-icon-192x192.png" width="20" height="20" /> <strong> [adventJS](https://adventjs.dev/es) es una iniciativa de [@midudev](https://midu.dev/)</strong>
6-
7-
## Retos
8-
9-
| Reto | Título | Solución | Puntos |
10-
| ---- | ---------------------------------------------------------------------------------------------- | ------------------------------ | ------ |
11-
| #01 | [¡Automatizando envolver regalos de navidad!](https://adventjs.dev/es/challenges/2022/1) | [Ver solución](./challenge01/) | 131 |
12-
| #02 | [Nadie quiere hacer horas extra](https://adventjs.dev/es/challenges/2022/2) | [Ver solución](./challenge02/) | 121 |
13-
| #03 | [¿Cuántas cajas de regalos puede llevar Papá Noel?](https://adventjs.dev/es/challenges/2022/3) | [Ver solución](./challenge03/) | 165 |
14-
| #04 | [Una caja dentro de otra caja y otra...](https://adventjs.dev/es/challenges/2022/4) | [Ver solución](./challenge04/) | 172 |
15-
| #05 | [Optimizando viajes de Santa](https://adventjs.dev/es/challenges/2022/5) | [Ver solución](./challenge05/) | 140 |
16-
| #06 | [Creando adornos navideños](https://adventjs.dev/es/challenges/2022/6) | [Ver solución](./challenge06/) | 160 |
17-
| #07 | [Haciendo inventario de regalos](https://adventjs.dev/es/challenges/2022/7) | [Ver solución](./challenge07/) | 400 |
18-
| #08 | [¡Necesitamos un mecánico!](https://adventjs.dev/es/challenges/2022/8) | [Ver solución](./challenge08/) | 240 |
19-
| #09 | [Las locas luces de Navidad](https://adventjs.dev/es/challenges/2022/9) | [Ver solución](./challenge09/) | 300 |
20-
| #10 | [El salto del trineo de Papá Noel](https://adventjs.dev/es/challenges/2022/10) | [Ver solución](./challenge10/) | 260 |
21-
| #11 | [Papá Noel es Scrum Master](https://adventjs.dev/es/challenges/2022/11) | [Ver solución](./challenge11/) | 260 |
22-
| #12 | [Trineos eléctricos, ¡guau!](https://adventjs.dev/es/challenges/2022/12) | [Ver solución](./challenge12/) | 400 |
23-
| #13 | [Backup de los archivos de Papá Noel](https://adventjs.dev/es/challenges/2022/13) | [Ver solución](./challenge13/) | 300 |
24-
| #14 | [El mejor camino](https://adventjs.dev/es/challenges/2022/14) | [Ver solución](./challenge14/) | 300 |
25-
| #15 | [Decorando el árbol de Navidad](https://adventjs.dev/es/challenges/2022/15) | [Ver solución](./challenge15/) | 260 |
26-
| #16 | [Arreglando las cartas de Papá Noel](https://adventjs.dev/es/challenges/2022/16) | [Ver solución](./challenge16/) | 300 |
27-
| #17 | [Llevando los regalos en sacos](https://adventjs.dev/es/challenges/2022/17) | [Ver solución](./challenge17/) | 260 |
28-
| #18 | [¡Nos quedamos sin tinta!](https://adventjs.dev/es/challenges/2022/18) | [Ver solución](./challenge18/) | 200 |
29-
| #19 | [Ordenando los regalos](https://adventjs.dev/es/challenges/2022/19) | [Ver solución](./challenge19/) | 400 |
30-
| #20 | [Más viajes retadores](https://adventjs.dev/es/challenges/2022/20) | [Ver solución](./challenge20/) | 10 |
31-
| #21 | [Creando la tabla de regalos](https://adventjs.dev/es/challenges/2022/21) | [Ver solución](./challenge21/) | 300 |
32-
| #22 | [La iluminación en sintonía](https://adventjs.dev/es/challenges/2022/22) | [Ver solución](./challenge22/) | 400 |
33-
| #23 | [Compilador de Papá Noel](https://adventjs.dev/es/challenges/2022/23) | [Ver solución](./challenge23/) | 10 |
34-
| #24 | | | |
35-
36-
## Tests
37-
38-
Cada challenge viene con su propio test basado en los test visibles de la cada reto, para ejecutarlos se necesita entrar aen la carpeta correspondiente de cada challenge y ejecutar `npm install`, luego `npm run test` para correr los test del correspondiente challenge.
1+
# [Reto #2: Nadie quiere hacer horas extra](https://adventjs.dev/es/challenges/2022/2)
2+
3+
![Reto_02](../Assets/Retos_SVG/2.svg)
4+
5+
Un millonario ha comprado una red social y no trae buenas noticias. Ha anunciado que <strong>cada vez que una jornada de trabajo se pierde por un día festivo</strong>, habrá que compensarlo con <strong>dos horas extra otro día de ese mismo año</strong>.
6+
7+
Obviamente la gente que trabaja en la empresa no le ha hecho ni pizca de gracia y están <strong>preparando un programa que les diga el número de horas extras que harían</strong> en el año si se aplicara la nueva norma.
8+
9+
Al ser trabajo de oficina, su horario laboral es <strong>de lunes a viernes</strong>. Así que sólo tienes que preocuparte de los días festivos que caen en esos días.
10+
11+
Dado un año y un array con las fechas de los días festivos, devuelve el número de horas extra que se harían ese año:
12+
13+
```js
14+
const year = 2022;
15+
const holidays = ['01/06', '04/01', '12/25']; // formato MM/DD
16+
17+
// 01/06 es el 6 de enero, jueves. Cuenta.
18+
// 04/01 es el 1 de abril, un viernes. Cuenta.
19+
// 12/25 es el 25 de diciembre, un domingo. No cuenta.
20+
21+
countHours(year, holidays); // 2 días -> 4 horas extra en el año
22+
```
23+
24+
Cosas a tener en cuenta y consejos:
25+
26+
- El año puede ser bisiesto. Haz las comprobaciones que necesitas para ello, si fuese necesario.
27+
- Aunque el 31 de diciembre sea festivo, las horas extra se harán el mismo año y no el siguiente.
28+
- El método Date.getDay() te devuelve el día de la semana de una fecha. El 0 es domingo, el 1 es lunes, etc.
29+
30+
---
31+
32+
## Resultados
33+
34+
### Test #01
35+
36+
```js
37+
Test: return type;
38+
39+
Expected: 'number';
40+
41+
Actual: 'number';
42+
```
43+
44+
### Test #02
45+
46+
```js
47+
Test: countHours(2023, ['01/06', '04/01', '12/25']);
48+
49+
Expected: 4;
50+
51+
Actual: 4;
52+
```
53+
54+
### Test #03
55+
56+
```js
57+
Test: countHours(2022, ['01/06', '04/01', '12/25']);
58+
59+
Expected: 4;
60+
61+
Actual: 4;
62+
```
63+
64+
### Test #04
65+
66+
```js
67+
Test: countHours(1985, ['01/01', '01/06', '02/02', '02/17', '02/28', '06/03', '12/06', '12/25']);
68+
69+
Expected: 10;
70+
71+
Actual: 10;
72+
```
73+
74+
### Test #05
75+
76+
```js
77+
Test: countHours(2000, ['01/01']);
78+
79+
Expected: 0;
80+
81+
Actual: 0;
82+
```

Reto_02/index.js

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
function countHours(year, holidays) {
2+
let aTrabajar = 0;
3+
for (let i = 0; i < holidays.length; i++) {
4+
let splitedDate = holidays[i].split('/');
5+
let date = new Date(year, Number(splitedDate[0] - 1), Number(splitedDate[1]));
6+
let day = date.getDay();
7+
8+
if (day != 0 && day != 6) {
9+
aTrabajar += 2;
10+
}
11+
}
12+
return aTrabajar;
13+
}

0 commit comments

Comments
 (0)