From 5f73bdccb79b9fda1f7742f38b79acce010eef50 Mon Sep 17 00:00:00 2001 From: Jefflionel <168990522+Jefflionel@users.noreply.github.com> Date: Thu, 5 Mar 2026 22:23:25 +0100 Subject: [PATCH 1/3] exercise on higher order functions --- Higher_Order_Ex.kt | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 Higher_Order_Ex.kt diff --git a/Higher_Order_Ex.kt b/Higher_Order_Ex.kt new file mode 100644 index 0000000..9ac8a6a --- /dev/null +++ b/Higher_Order_Ex.kt @@ -0,0 +1,16 @@ +import kotlin.* + +fun processList(numbers: List, predicate: (Int) -> Boolean): List = + numbers.filter(predicate) + +fun main() { + val numbers = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) + + // Example 1: keep only even numbers + val evenNumbers = processList(numbers) { it % 2 == 0 } + println("Even: $evenNumbers") + + // Example 2: keep only numbers > 5 + val bigNumbers = processList(numbers) { it > 5 } + println("Big: $bigNumbers") +} From 84c389a2a3b1342a979d6b5cb864a959d305de60 Mon Sep 17 00:00:00 2001 From: Jefflionel <168990522+Jefflionel@users.noreply.github.com> Date: Thu, 5 Mar 2026 22:29:13 +0100 Subject: [PATCH 2/3] exercise on collections --- Collection_Ex.kt | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 Collection_Ex.kt diff --git a/Collection_Ex.kt b/Collection_Ex.kt new file mode 100644 index 0000000..24b51df --- /dev/null +++ b/Collection_Ex.kt @@ -0,0 +1,11 @@ +fun main() { + val words = listOf("Kotlin", "is", "awesome", "for", "Android", "development") + + // Step 1 + val wordLengths = words.associateWith { it.length } + + // Step 2 + wordLengths.filter { it.value > 4 }.forEach { (word, length) -> + println("$word has $length letters") + } +} From b09a5de9bbb4c4434797636810cb0368abc070df Mon Sep 17 00:00:00 2001 From: Jefflionel <168990522+Jefflionel@users.noreply.github.com> Date: Thu, 5 Mar 2026 22:32:41 +0100 Subject: [PATCH 3/3] DataProcessing exercise --- Data_Processing_Ex.kt | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 Data_Processing_Ex.kt diff --git a/Data_Processing_Ex.kt b/Data_Processing_Ex.kt new file mode 100644 index 0000000..d2edc7d --- /dev/null +++ b/Data_Processing_Ex.kt @@ -0,0 +1,29 @@ +data class Student(val name: String, val age: Int, val score: Int) + +fun List.averageScore(): Double = + if (isEmpty()) 0.0 else sumOf { it.score }.toDouble() / size + +fun processStudents(students: List, action: (Student) -> Unit) { + students.forEach(action) +} + +fun main() { + val students = + listOf( + Student("Alice", 20, 85), + Student("Bob", 21, 92), + Student("Jeff", 19, 78), + Student("Sara", 22, 95), + Student("Mike", 20, 65) + ) + + // students with score >= 80 + students.filter { it.score >= 80 }.map { it.name }.forEach { println("Good student: $it") } + + println("\nProcessing all students:") + processStudents(students) { student -> + println("${student.name} (${student.age}) scored ${student.score}") + } + + println("\nAverage score of all students: ${students.averageScore()}") +}