Skip to content

✨ Add typescript solution challenge-22 #101

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Sep 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions 2024/22-funciones-de-orden-superior/solution.ts
Original file line number Diff line number Diff line change
@@ -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);
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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) <br /> [![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) <br /> [![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) <br /> [![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) <br /> [![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) |
Expand Down
Loading