selectmany in kotlin

data class Person(val name: String, val hobbies: List<String>)

fun main() {
    val persons = listOf(
        Person("Alice", listOf("Reading", "Swimming")),
        Person("Bob", listOf("Cycling", "Painting")),
        Person("Charlie", listOf("Swimming", "Cooking"))
    )

    val allHobbies = persons.flatMap { it.hobbies }
    println("All Hobbies: $allHobbies")

    val distinctHobbies = allHobbies.distinct()
    println("Distinct Hobbies: $distinctHobbies")

    val groupedByHobbies = persons.flatMap { person ->
        person.hobbies.map { hobby -> hobby to person.name }
    }.groupBy({ it.first }, { it.second })
    println("Grouped by Hobbies: $groupedByHobbies")
}