grade_report.kt en Kotlin
Boletines desde un roster de data classes, una escalera when y format.
// Average each student's scores and print a letter-grade report card.
data class Student(val name: String, val scores: List<Int>)
val ROSTER = listOf(
Student("Ada", listOf(92, 88, 97)),
Student("Grace", listOf(84, 91, 78)),
Student("Alan", listOf(70, 66, 74)),
Student("Edsger", listOf(58, 67, 61)),
)
fun letter(avg: Double): Char = when {
avg >= 90 -> 'A'
avg >= 80 -> 'B'
avg >= 70 -> 'C'
avg >= 60 -> 'D'
else -> 'F'
}
fun main() {
println("student avg grade")
for (s in ROSTER.sortedBy { it.name }) {
val avg = s.scores.average()
println("%-8s %4.1f %c".format(s.name, avg, letter(avg)))
}
val classAvg = ROSTER.flatMap { it.scores }.average()
println("Class average: %.1f".format(classAvg))
}
Cómo funciona
Studentes una data class;ROSTERguarda cuatro.lettermapea un promedio a una calificación con unwhensin sujeto.flatMapjunta cada puntaje para el promedio del curso al final.
Palabras clave y builtins usados aquí
CharDoubleIntStringclassdataelseforfuninitvalwhen
El intento, en números
- Líneas
- 28
- Caracteres a escribir
- 706
- Tokens
- 232
- Ritmo de tres estrellas
- 65 tpm
Al ritmo de tres estrellas de 65 tokens por minuto, este intento toma unos 214 segundos.
Paso 2 de 3 en Bis; paso 26 de 27 en Fundamentos del lenguaje.