#kotlinDevChallenge – 22


Write a function to aggregate sales data from a list of transactions, each containing multiple product IDs. Use a ProductsDatabase class with methods to retrieve product details by ID and to get all products. The function should return the names of the most sold products.

Include an option to limit the number of product names returned (e.g., top 5 most sold products).

  1. Fill in the code.
  2. You can copy the code into IntelliJ/Android Studio, but it shouldn’t be necessary.
  3. Click “run” – the green triangle. The code will compile and several tests will be run.
  4. In the logs, you will see “try again” if the solution is incorrect, or “success” and a special code.
  5. Provide this code in the form below along with your email and click “send”.
data class Product(val id: Int, val name: String)
data class Transaction(val productIds: List<Int>, val customerId: Int)

class ProductsDatabase {
    private val products = listOf(
        Product(1, "Keyboard"),
        Product(2, "Mouse"),
        Product(3, "Monitor")

    fun getAllProducts() = products

    fun getProductById(id: Int) = products.firstOrNull { it.id == id }

ps. Again – there are few ways to achieve that 🙂

Join The Android Architect cohort #2

6 weeks cohort course on Architecture and Mobile Devops

✅ Mentor + peer homework review

Learn from Kotlin GDE, Jarosław Michalik: Draw on the expertise of a seasoned Android professional.

high-level design guide for Android Architects

Wow finally something straightforward” ~ Marcin, Senior Android Engineer

  • high-level design overview
  • explanatory video
  • you were probably looking for it for a long time

Read more:

  • #kotlinDevChallenge 2023 summary

    #kotlinDevChallenge 2023 summary

    The KotlinDevChallenge was not just a competition, but a journey of learning, growth, and community engagement. Every participant in this challenge is a winner…

  • #kotlinDevChallenge – 24

    #kotlinDevChallenge – 24

    What do you love most about Kotlin? Productivity increase? Idioms? Or that it isn’t Java? Maybe something else! Share it. It can be short.…

  • #kotlinDevChallenge – 23

    #kotlinDevChallenge – 23

    Challenge checking your generics knowledge 🙂 No long description is necessary. You can select more than one answer. Good luck!