Skip to content

Commit a7aa93f

Browse files
authored
Merge pull request #101 from marcode24/2024-22-ts
✨ Add typescript solution challenge-22
2 parents f510c97 + 88e2d88 commit a7aa93f

File tree

2 files changed

+61
-1
lines changed

2 files changed

+61
-1
lines changed
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
/* eslint-disable no-console */
2+
3+
// Definición de tipos
4+
type Student = {
5+
name: string;
6+
birthDate: string;
7+
grades: number[];
8+
};
9+
10+
// Función que acepta una función como argumento y aplica esa función a una lista de números
11+
function applyToList(numbers: number[], operation: (num: number) => number): number[] {
12+
return numbers.map(operation);
13+
}
14+
15+
// Función para duplicar un número
16+
function double(number: number): number {
17+
return number * 2;
18+
}
19+
20+
// Usando la función applyToList con la función double
21+
const numbers: number[] = [1, 2, 3, 4];
22+
const doubledNumbers: number[] = applyToList(numbers, double);
23+
24+
console.log(doubledNumbers); // [2, 4, 6, 8]
25+
26+
// Lista de estudiantes
27+
const students: Student[] = [
28+
{ name: 'Alice', birthDate: '1998-06-15', grades: [9.5, 8.7, 9.1] },
29+
{ name: 'Bob', birthDate: '2000-01-22', grades: [6.5, 7.0, 8.2] },
30+
{ name: 'Charlie', birthDate: '1999-11-30', grades: [9.2, 9.8, 10.0] },
31+
{ name: 'Diana', birthDate: '2001-04-10', grades: [8.5, 9.0, 9.3] },
32+
];
33+
34+
// 1. Promedio de calificaciones
35+
const averageGrades = students.map((student) => {
36+
const average = student.grades.reduce((acc, grade) => acc + grade, 0) / student.grades.length;
37+
return { name: student.name, average };
38+
});
39+
40+
// 2. Mejores estudiantes (con promedio >= 9)
41+
const bestStudents = averageGrades
42+
.filter((student) => student.average >= 9)
43+
.map((student) => student.name);
44+
45+
// 3. Estudiantes ordenados por fecha de nacimiento (más jóvenes primero)
46+
const sortedByBirthDate = students
47+
.slice()
48+
.sort((a, b) => new Date(b.birthDate).getTime() - new Date(a.birthDate).getTime());
49+
50+
// 4. Mayor calificación
51+
const highestGrade = Math.max(...students.flatMap((student) => student.grades));
52+
53+
// Mostrar resultados
54+
console.log('Promedio de Calificaciones:', averageGrades);
55+
console.log('Mejores Estudiantes:', bestStudents);
56+
console.log(
57+
'Estudiantes Ordenados por Fecha de Nacimiento:',
58+
sortedByBirthDate.map((student) => student.name),
59+
);
60+
console.log('Mayor Calificación:', highestGrade);

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ npm run test 'year'/'folder-name'/solution.test.js
7171
| 19 | [Enumeraciones](https://retosdeprogramacion.com/roadmap/) | 🟡 | [![JavaScript](https://img.shields.io/badge/-JavaScript-F7DF1E?style=flat&logo=javascript&logoColor=black)](./2024/19-enumeraciones/index.js) <br /> [![TypeScript](https://img.shields.io/badge/-TypeScript-3178C6?style=flat&logo=typescript&logoColor=white)](./2024/19-enumeraciones/solution.ts) |
7272
| 20 | [Peticiones HTTP](https://retosdeprogramacion.com/roadmap/) | 🔴 | [![JavaScript](https://img.shields.io/badge/-JavaScript-F7DF1E?style=flat&logo=javascript&logoColor=black)](./2024/20-peticiones-http/index.js) <br /> [![TypeScript](https://img.shields.io/badge/-TypeScript-3178C6?style=flat&logo=typescript&logoColor=white)](./2024/20-peticiones-http/solution.ts) |
7373
| 21 | [Callbacks](https://retosdeprogramacion.com/roadmap/) | 🟡 | [![JavaScript](https://img.shields.io/badge/-JavaScript-F7DF1E?style=flat&logo=javascript&logoColor=black)](./2024/21-callbacks/index.js) <br /> [![TypeScript](https://img.shields.io/badge/-TypeScript-3178C6?style=flat&logo=typescript&logoColor=white)](./2024/21-callbacks/solution.ts) |
74-
| 22 | [Funciones de Orden Superior](https://retosdeprogramacion.com/roadmap/) | 🔴 | [![JavaScript](https://img.shields.io/badge/-JavaScript-F7DF1E?style=flat&logo=javascript&logoColor=black)](./2024/22-funciones-de-orden-superior/index.js) |
74+
| 22 | [Funciones de Orden Superior](https://retosdeprogramacion.com/roadmap/) | 🔴 | [![JavaScript](https://img.shields.io/badge/-JavaScript-F7DF1E?style=flat&logo=javascript&logoColor=black)](./2024/22-funciones-de-orden-superior/index.js) <br /> [![TypeScript](https://img.shields.io/badge/-TypeScript-3178C6?style=flat&logo=typescript&logoColor=white)](./2024/22-funciones-de-orden-superior/solution.ts) |
7575
| 23 | [Patrones de Diseño: Singleton](https://retosdeprogramacion.com/roadmap/) | 🟡 | [![JavaScript](https://img.shields.io/badge/-JavaScript-F7DF1E?style=flat&logo=javascript&logoColor=black)](./2024/23-singleton/index.js) |
7676
| 24 | [Patrones de Diseño: Decoradores](https://retosdeprogramacion.com/roadmap/) | 🟢 | [![JavaScript](https://img.shields.io/badge/-JavaScript-F7DF1E?style=flat&logo=javascript&logoColor=black)](./2024/24-decoradores/index.js) |
7777
| 25 | [Logs](https://retosdeprogramacion.com/roadmap/) | 🟢 | [![JavaScript](https://img.shields.io/badge/-JavaScript-F7DF1E?style=flat&logo=javascript&logoColor=black)](./2024/25-logs/index.js) |

0 commit comments

Comments
 (0)