Menu
Coddy logo textTech

Испытание — Аналитика слов

Часть раздела Логика и управление потоком путешествия по Kotlin на Coddy. Урок 61 из 63.

challenge icon

Задание

Эксперт

Дополните wordAnalytics параметром lines: List<String>. Извлеките из каждой строки все последовательные группы ASCII-букв с помощью [A-Za-z]+, приведите их к нижнему регистру и подсчитайте количество вхождений. Верните элементы word=count в порядке убывания частоты, а при одинаковой частоте — в алфавитном порядке. Цифры и знаки пунктуации разделяют слова.

Если выше не указаны более строгие ограничения, коллекции содержат не более 100 элементов на каждом уровне, а целочисленные аргументы и целочисленные значения коллекций находятся в диапазоне от -1000 до 1000. Текст, предоставленный для разбора, может содержать недопустимые или выходящие за диапазон представления, как описано.

Верните значение типа List<String>. Сохраните предоставленный код ввода/вывода. Он считывает скалярные аргументы по одному в строке; список начинается с его количества элементов, за которым следуют эти элементы, а map начинается с количества записей, за которым следуют каждый ключ и значение. Для каждой вложенной строки списков повторяется формат с количеством и элементами. Предоставленный main выводит возвращаемое значение, за которым следует один перевод строки. Списки используют стандартный формат Kotlin со скобками; не выводите дополнительные метки.

Попробуйте сами

fun wordAnalytics(lines: List<String>): List<String> {
    // Напишите ваше решение здесь.
    return emptyList()
}
fun main() {
    val linesCount = readln().toInt()
    val lines = mutableListOf<String>()
    for (i0 in 0 until linesCount) {
        val linesItem = readLine().orEmpty()
        lines.add(linesItem)
    }
    println(wordAnalytics(lines))
}

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Песочница Kotlin