From 7b02a88057ad49cfb1709b7f8a814ff12a44bc73 Mon Sep 17 00:00:00 2001 From: Marco Cruz Date: Thu, 19 Sep 2024 23:51:36 +0000 Subject: [PATCH 1/2] :sparkles: Add typescript solution challenge-22 --- .../solution.ts | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 2024/22-funciones-de-orden-superior/solution.ts diff --git a/2024/22-funciones-de-orden-superior/solution.ts b/2024/22-funciones-de-orden-superior/solution.ts new file mode 100644 index 0000000..d0526db --- /dev/null +++ b/2024/22-funciones-de-orden-superior/solution.ts @@ -0,0 +1,60 @@ +/* eslint-disable no-console */ + +// Definición de tipos +type Student = { + name: string; + birthDate: string; + grades: number[]; +}; + +// Función que acepta una función como argumento y aplica esa función a una lista de números +function applyToList(numbers: number[], operation: (num: number) => number): number[] { + return numbers.map(operation); +} + +// Función para duplicar un número +function double(number: number): number { + return number * 2; +} + +// Usando la función applyToList con la función double +const numbers: number[] = [1, 2, 3, 4]; +const doubledNumbers: number[] = applyToList(numbers, double); + +console.log(doubledNumbers); // [2, 4, 6, 8] + +// Lista de estudiantes +const students: Student[] = [ + { name: 'Alice', birthDate: '1998-06-15', grades: [9.5, 8.7, 9.1] }, + { name: 'Bob', birthDate: '2000-01-22', grades: [6.5, 7.0, 8.2] }, + { name: 'Charlie', birthDate: '1999-11-30', grades: [9.2, 9.8, 10.0] }, + { name: 'Diana', birthDate: '2001-04-10', grades: [8.5, 9.0, 9.3] }, +]; + +// 1. Promedio de calificaciones +const averageGrades = students.map((student) => { + const average = student.grades.reduce((acc, grade) => acc + grade, 0) / student.grades.length; + return { name: student.name, average }; +}); + +// 2. Mejores estudiantes (con promedio >= 9) +const bestStudents = averageGrades + .filter((student) => student.average >= 9) + .map((student) => student.name); + +// 3. Estudiantes ordenados por fecha de nacimiento (más jóvenes primero) +const sortedByBirthDate = students + .slice() + .sort((a, b) => new Date(b.birthDate).getTime() - new Date(a.birthDate).getTime()); + +// 4. Mayor calificación +const highestGrade = Math.max(...students.flatMap((student) => student.grades)); + +// Mostrar resultados +console.log('Promedio de Calificaciones:', averageGrades); +console.log('Mejores Estudiantes:', bestStudents); +console.log( + 'Estudiantes Ordenados por Fecha de Nacimiento:', + sortedByBirthDate.map((student) => student.name), +); +console.log('Mayor Calificación:', highestGrade); From 88e2d882deda01d28974c6a1bd606f194efa6114 Mon Sep 17 00:00:00 2001 From: Marco Cruz Date: Thu, 19 Sep 2024 23:53:35 +0000 Subject: [PATCH 2/2] :memo: Update README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d56d35d..37cbd1f 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,7 @@ npm run test 'year'/'folder-name'/solution.test.js | 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)
[![TypeScript](https://img.shields.io/badge/-TypeScript-3178C6?style=flat&logo=typescript&logoColor=white)](./2024/19-enumeraciones/solution.ts) | | 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)
[![TypeScript](https://img.shields.io/badge/-TypeScript-3178C6?style=flat&logo=typescript&logoColor=white)](./2024/20-peticiones-http/solution.ts) | | 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)
[![TypeScript](https://img.shields.io/badge/-TypeScript-3178C6?style=flat&logo=typescript&logoColor=white)](./2024/21-callbacks/solution.ts) | -| 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) | +| 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)
[![TypeScript](https://img.shields.io/badge/-TypeScript-3178C6?style=flat&logo=typescript&logoColor=white)](./2024/22-funciones-de-orden-superior/solution.ts) | | 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) | | 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) | | 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) |