Bird
Raised Fist0
Kotlinprogramming~20 mins

Partition for splitting in Kotlin - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Partition Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this Kotlin partition example?
Consider the following Kotlin code that uses the partition function to split a list of integers into even and odd numbers. What will be printed?
Kotlin
val numbers = listOf(1, 2, 3, 4, 5, 6)
val (evens, odds) = numbers.partition { it % 2 == 0 }
println("Evens: $evens")
println("Odds: $odds")
AEvens: [1, 3, 5]\nOdds: [2, 4, 6]
BEvens: [2, 4, 6]\nOdds: [1, 3, 5]
CEvens: [1, 2, 3]\nOdds: [4, 5, 6]
DEvens: []\nOdds: [1, 2, 3, 4, 5, 6]
Attempts:
2 left
💡 Hint
Remember, partition splits the list into two lists: one where the condition is true, and one where it is false.
❓ Predict Output
intermediate
2:00remaining
What is the size of the lists after partition?
Given this Kotlin code, how many elements are in the first and second lists after partitioning by the condition it > 3?
Kotlin
val data = listOf(2, 3, 4, 5, 6)
val (greaterThanThree, notGreaterThanThree) = data.partition { it > 3 }
println("greaterThanThree size: ${greaterThanThree.size}")
println("notGreaterThanThree size: ${notGreaterThanThree.size}")
AgreaterThanThree size: 3\nnotGreaterThanThree size: 2
BgreaterThanThree size: 0\nnotGreaterThanThree size: 5
CgreaterThanThree size: 5\nnotGreaterThanThree size: 0
DgreaterThanThree size: 2\nnotGreaterThanThree size: 3
Attempts:
2 left
💡 Hint
Count how many numbers in the list are greater than 3.
❓ Predict Output
advanced
2:00remaining
What is the output when partitioning a list of strings by length?
Look at this Kotlin code that partitions a list of strings by whether their length is greater than 3. What will be printed?
Kotlin
val words = listOf("cat", "house", "dog", "elephant")
val (longWords, shortWords) = words.partition { it.length > 3 }
println("Long words: $longWords")
println("Short words: $shortWords")
ALong words: []\nShort words: [cat, house, dog, elephant]
BLong words: [cat, dog]\nShort words: [house, elephant]
CLong words: [cat, house, dog]\nShort words: [elephant]
DLong words: [house, elephant]\nShort words: [cat, dog]
Attempts:
2 left
💡 Hint
Check the length of each word carefully.
❓ Predict Output
advanced
2:00remaining
What error occurs when using partition incorrectly?
What error will this Kotlin code produce?
Kotlin
val numbers = listOf(1, 2, 3)
val (evens, odds) = numbers.partition { it % 2 == 0 }
println(evens[3])
ANoSuchElementException
BNullPointerException
CIndexOutOfBoundsException
DClassCastException
Attempts:
2 left
💡 Hint
Check the size of the evens list and the index accessed.
🧠 Conceptual
expert
2:00remaining
Which option correctly describes the behavior of Kotlin's partition function?
Choose the statement that best describes what Kotlin's partition function does when called on a collection.
AIt splits the collection into two lists: the first contains elements matching the predicate, the second contains elements not matching it.
BIt filters the collection and returns a single list with elements matching the predicate.
CIt removes all elements that match the predicate from the original collection.
DIt sorts the collection into ascending and descending order lists.
Attempts:
2 left
💡 Hint
Think about how partition divides elements based on a condition.

Practice

(1/5)
1. What does the partition function do in Kotlin when applied to a list?
easy
A. Converts the list into a map with indices as keys.
B. Sorts the list in ascending order.
C. Removes duplicate elements from the list.
D. Splits the list into two lists based on a condition, returning a Pair of lists.

Solution

  1. Step 1: Understand the purpose of partition

    The partition function divides a list into two parts based on a condition.
  2. Step 2: Recognize the return type

    It returns a Pair where the first list contains elements matching the condition, and the second list contains the rest.
  3. Final Answer:

    Splits the list into two lists based on a condition, returning a Pair of lists. -> Option D
  4. Quick Check:

    partition = split by condition [OK]
Hint: Remember: partition always returns two lists in a Pair [OK]
Common Mistakes:
  • Thinking partition sorts the list
  • Confusing partition with filtering
  • Assuming partition removes duplicates
2. Which of the following is the correct syntax to use partition on a list numbers to split even and odd numbers?
easy
A. val (evens, odds) = numbers.partition { it % 2 == 0 }
B. val (evens, odds) = numbers.partition(it % 2 == 0)
C. val evens = numbers.partition { it % 2 == 0 }
D. val evens, odds = numbers.partition { it % 2 == 0 }

Solution

  1. Step 1: Check the lambda syntax inside partition

    The condition must be inside curly braces with it representing each element.
  2. Step 2: Verify destructuring declaration

    Partition returns a Pair, so use val (first, second) = ... to get both lists.
  3. Final Answer:

    val (evens, odds) = numbers.partition { it % 2 == 0 } -> Option A
  4. Quick Check:

    Correct lambda and destructuring = val (evens, odds) = numbers.partition { it % 2 == 0 } [OK]
Hint: Use val (a, b) = list.partition { condition } [OK]
Common Mistakes:
  • Missing curly braces for lambda
  • Not using destructuring for Pair
  • Using parentheses instead of braces for lambda
3. What is the output of this Kotlin code?
val words = listOf("apple", "banana", "avocado", "berry")
val (aWords, otherWords) = words.partition { it.startsWith('a') }
println(aWords)
println(otherWords)
medium
A. ["apple", "avocado"] ["banana", "berry"]
B. ["banana", "berry"] ["apple", "avocado"]
C. ["apple"] ["banana", "avocado", "berry"]
D. ["avocado"] ["apple", "banana", "berry"]

Solution

  1. Step 1: Apply the condition to each word

    Check which words start with 'a': "apple" and "avocado" match.
  2. Step 2: Partition splits into two lists

    First list has words starting with 'a', second list has the rest: "banana", "berry".
  3. Final Answer:

    ["apple", "avocado"] ["banana", "berry"] -> Option A
  4. Quick Check:

    partition by startsWith('a') = ["apple", "avocado"] ["banana", "berry"] [OK]
Hint: Check condition on each element carefully [OK]
Common Mistakes:
  • Mixing order of lists in output
  • Forgetting that partition returns Pair of lists
  • Confusing startsWith with contains
4. Identify the error in this Kotlin code using partition:
val nums = listOf(1, 2, 3, 4)
val evens, odds = nums.partition { it % 2 == 0 }
println(evens)
println(odds)
medium
A. partition cannot be used on lists of integers.
B. The lambda condition is incorrect; should be it % 2 != 0.
C. Missing parentheses around evens and odds for destructuring declaration.
D. println statements are missing string interpolation.

Solution

  1. Step 1: Check destructuring declaration syntax

    Destructuring a Pair requires parentheses: val (evens, odds) = ....
  2. Step 2: Confirm lambda and usage

    The lambda is correct for evens; partition works on lists of integers; println is fine.
  3. Final Answer:

    Missing parentheses around evens and odds for destructuring declaration. -> Option C
  4. Quick Check:

    Destructuring needs parentheses [OK]
Hint: Use val (a, b) = ... for destructuring Pair [OK]
Common Mistakes:
  • Omitting parentheses in destructuring
  • Changing correct lambda unnecessarily
  • Thinking partition only works on strings
5. Given a list of mixed integers including zero and negatives, how can you use partition to separate positive numbers from zero and negatives? Choose the correct code snippet.
hard
A. val (positives, nonPositives) = numbers.partition { it < 0 }
B. val (positives, nonPositives) = numbers.partition { it > 0 }
C. val (positives, nonPositives) = numbers.partition { it >= 0 }
D. val (positives, nonPositives) = numbers.partition { it == 0 }

Solution

  1. Step 1: Define the condition for positives

    Positive numbers are greater than zero, so condition is it > 0.
  2. Step 2: Use partition with this condition

    Partition splits list into positives and the rest (zero and negatives).
  3. Final Answer:

    val (positives, nonPositives) = numbers.partition { it > 0 } -> Option B
  4. Quick Check:

    Partition by it > 0 separates positives [OK]
Hint: Use it > 0 to get positives, rest are zero/negatives [OK]
Common Mistakes:
  • Using it >= 0 includes zero as positive
  • Using it < 0 reverses groups
  • Using it == 0 only selects zeros
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard