Skip to content

Commit 66d6b48

Browse files
committed
#22 - Kotlin
1 parent e272e0f commit 66d6b48

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
// Ejemplos simples de funciones de orden superior
2+
3+
// 1. Función que recibe otra función como parámetro
4+
fun operacion(a: Int, b: Int, funcion: (Int, Int) -> Int): Int {
5+
return funcion(a, b)
6+
}
7+
8+
// 2. Función que devuelve otra función
9+
fun multiplicadorPor(factor: Int): (Int) -> Int {
10+
return { numero -> numero * factor }
11+
}
12+
13+
fun main() {
14+
// Uso de la función 'operacion'
15+
val suma = operacion(5, 3) { x, y -> x + y }
16+
println("Suma: $suma")
17+
18+
val multiplicacion = operacion(5, 3) { x, y -> x * y }
19+
println("Multiplicación: $multiplicacion")
20+
21+
// Uso de la función 'multiplicadorPor'
22+
val duplicar = multiplicadorPor(2)
23+
println("Duplicar 7: ${duplicar(7)}")
24+
25+
// Ejercicio Extra
26+
data class Estudiante(
27+
val nombre: String,
28+
val fechaNacimiento: String,
29+
val calificaciones: List<Double>
30+
)
31+
32+
val estudiantes = listOf(
33+
Estudiante("Ana", "2000-05-15", listOf(8.5, 9.0, 9.5, 10.0)),
34+
Estudiante("Carlos", "1999-11-30", listOf(7.0, 8.0, 8.5, 9.0)),
35+
Estudiante("Elena", "2001-03-22", listOf(9.0, 9.5, 10.0, 10.0)),
36+
Estudiante("David", "2000-09-10", listOf(6.5, 7.0, 7.5, 8.0))
37+
)
38+
39+
// Promedio calificaciones
40+
val promedios = estudiantes.map { estudiante ->
41+
val promedio = estudiante.calificaciones.average()
42+
"${estudiante.nombre}: ${"%.2f".format(promedio)}"
43+
}
44+
println("Promedios: $promedios")
45+
46+
// Mejores estudiantes
47+
val mejoresEstudiantes = estudiantes.filter {
48+
it.calificaciones.average() >= 9.0
49+
}.map { it.nombre }
50+
println("Mejores estudiantes: $mejoresEstudiantes")
51+
52+
// Nacimiento (ordenado desde el más joven)
53+
val ordenPorEdad = estudiantes.sortedByDescending { it.fechaNacimiento }
54+
.map { it.nombre }
55+
println("Orden por edad (más joven primero): $ordenPorEdad")
56+
57+
// Mayor calificación
58+
val mayorCalificacion = estudiantes.flatMap { it.calificaciones }.maxOrNull()
59+
println("Mayor calificación: $mayorCalificacion")
60+
}

0 commit comments

Comments
 (0)