From 973305efe831675e34a88d4a23c64b8ce688e1b0 Mon Sep 17 00:00:00 2001 From: Njood Date: Fri, 14 Feb 2025 20:24:34 +0300 Subject: [PATCH 1/5] completed lambda with collections part 1- lambda with list transformation --- lambda_collections/lambda_collections.iml | 15 +++++++++++++++ lambda_collections/src/lambda_list.kt | 5 +++++ 2 files changed, 20 insertions(+) create mode 100644 lambda_collections/lambda_collections.iml create mode 100644 lambda_collections/src/lambda_list.kt diff --git a/lambda_collections/lambda_collections.iml b/lambda_collections/lambda_collections.iml new file mode 100644 index 0000000..4fd7bdb --- /dev/null +++ b/lambda_collections/lambda_collections.iml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/lambda_collections/src/lambda_list.kt b/lambda_collections/src/lambda_list.kt new file mode 100644 index 0000000..e9fbee0 --- /dev/null +++ b/lambda_collections/src/lambda_list.kt @@ -0,0 +1,5 @@ +fun main() { + val numbers = (1..10).toList() + val doubledNumbers = numbers.map { it * 2 } + println(doubledNumbers) +} From 13b3a0ade22ea59899d6b4eb992f54ac96162c37 Mon Sep 17 00:00:00 2001 From: Njood Date: Fri, 14 Feb 2025 20:35:18 +0300 Subject: [PATCH 2/5] completed part 2 - filtering strings with lambda --- lambda_collections/src/filtering_strings.kt | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 lambda_collections/src/filtering_strings.kt diff --git a/lambda_collections/src/filtering_strings.kt b/lambda_collections/src/filtering_strings.kt new file mode 100644 index 0000000..4cc5159 --- /dev/null +++ b/lambda_collections/src/filtering_strings.kt @@ -0,0 +1,9 @@ +fun filterNames(names: List, filter: (String) -> Boolean): List { + return names.filter { filter(it) } +} + +fun main() { + val names = listOf("Alice", "Bob", "Amir", "Charlie", "Annie", "David") + val filteredNames = filterNames(names) { it.startsWith("A") } + println(filteredNames) +} From b24349f3a5b57111dceb3e618de97390a92efac0 Mon Sep 17 00:00:00 2001 From: Njood Date: Fri, 14 Feb 2025 20:38:03 +0300 Subject: [PATCH 3/5] completed part 3 - sorting with custom lambda --- lambda_collections/src/sorting_lambda.kt | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 lambda_collections/src/sorting_lambda.kt diff --git a/lambda_collections/src/sorting_lambda.kt b/lambda_collections/src/sorting_lambda.kt new file mode 100644 index 0000000..c32f56a --- /dev/null +++ b/lambda_collections/src/sorting_lambda.kt @@ -0,0 +1,5 @@ +fun main() { + val words = listOf("apple", "banana", "kiwi", "strawberry", "grape") + val sortedWords = words.sortedByDescending { it.length } + println(sortedWords) +} From 0ecdbfb471fc82393e68180fc66d7fd1f1bf153d Mon Sep 17 00:00:00 2001 From: Njood Date: Fri, 14 Feb 2025 21:08:53 +0300 Subject: [PATCH 4/5] completed part 4- Customizing the Filter of a List --- lambda_collections/src/custom_filter.kt | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 lambda_collections/src/custom_filter.kt diff --git a/lambda_collections/src/custom_filter.kt b/lambda_collections/src/custom_filter.kt new file mode 100644 index 0000000..44190e5 --- /dev/null +++ b/lambda_collections/src/custom_filter.kt @@ -0,0 +1,16 @@ +fun customFilter(numbers: List, filter: (Int) -> Boolean): List { + return numbers.filter(filter) +} + +fun main() { + val greaterThanFive = customFilter(listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)) { it > 5 } + println(greaterThanFive) + + val evenNumbers = customFilter(listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)) { it % 2 == 0 } + println(evenNumbers) + + val multiplesOfThree = customFilter(listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)) { it % 3 == 0 } + println(multiplesOfThree) +} + + From 6b80631701c3b42a4be3cc2c674442e5772bbd0a Mon Sep 17 00:00:00 2001 From: Njood Date: Fri, 14 Feb 2025 21:26:03 +0300 Subject: [PATCH 5/5] completed part 5- combining lambdas with the bonus question --- lambda_collections/src/combining_lambdas.kt | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 lambda_collections/src/combining_lambdas.kt diff --git a/lambda_collections/src/combining_lambdas.kt b/lambda_collections/src/combining_lambdas.kt new file mode 100644 index 0000000..77f226b --- /dev/null +++ b/lambda_collections/src/combining_lambdas.kt @@ -0,0 +1,13 @@ +fun processNumbers(numbers: List, filter: (Int) -> Boolean, transform: (Int) -> Int): List { + // for the bonus question, it was a bit harder + // although by adding transform it modifies them by squaring or multiplying + //whereas previously it was just squaring them with it*it only + return numbers.filter(filter).map(transform) +} + +fun main() { + val numbers = listOf(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) + val result = processNumbers(numbers, { it % 2 != 0 }, { it * it }) + println(result) +} +