// 4. Language preference counts (active users only) val langCounts = users.filter { it.isActive } .groupingBy { it.preferences.language } .eachCount() println("\nActive users by language preference:") langCounts.toSortedMap().forEach { (lang, count) -> println(" $lang: $count") }
Run this once to create users.json :
@Serializable data class User( @SerialName("user_id") val userId: String, @SerialName("full_name") val fullName: String, val email: String, val age: Int, @SerialName("signup_date") val signupDate: LocalDate, @SerialName("is_active") val isActive: Boolean, @SerialName("last_login") val lastLogin: LocalDateTime?, val preferences: Preferences, @SerialName("days_since_last_login") val daysSinceLastLogin: Int? = null ) fabric-language-kotlin
Active users by language preference: Java: 198 Kotlin: 213 Python: 197 Rust: 192 Last login recency val now = LocalDateTime
// 3. Last login recency val now = LocalDateTime.now() val avgDaysSinceLogin = users.mapNotNull { it.lastLogin } .map { ChronoUnit.DAYS.between(it, now) } .average() println("\nAverage days since last login: ${String.format("%.1f", avgDaysSinceLogin)}") { kotlinOptions.jvmTarget = "17" }
tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> { kotlinOptions.jvmTarget = "17" }