Статистика по первым буквам
Коллекции и группировка
Дан список строк, каждая — непустое слово из ASCII-букв A–Z/a–z либо пустая строка. Верни Map: ключ — первая буква в нижнем регистре, значение — число слов с этой буквой. Пустые строки пропускаются; ключи должны перечисляться по возрастанию.
Это задача для Kotlin/JVM: эталон использует JVM-функцию toSortedMap. Условие намеренно ограничивает алфавит: сортировка Char не равна лингвистической сортировке произвольного Unicode.
Проверь:
- Пример из main →
{a=2, c=1, k=2}. - Пустой список или только пустые строки → пустая Map.
listOf("Zoo", "apple", "APPLE", "")→{a=2, z=1}.- Каждое слово учитывается один раз; регистр остальной части слова не важен.
Сохранённый код превышает предел редактора. Скачай его перед сбросом; исходная запись сохранена.
Проверка пустоты предшествует first(). Grouping вместе с eachCount считает группы, не создавая список элементов для каждой группы. groupingBy, eachCount.
lowercaseChar использует преобразование одного Char в один Char; оно не решает общую задачу Unicode case folding. Ограничение ASCII делает поведение в этой задаче однозначным. lowercaseChar.
toSortedMap — JVM API, возвращающий карту с естественным порядком ключей. Здесь после нормализации остаются a–z, поэтому этот порядок совпадает с требуемым. Для commonMain или другого алфавита договор и реализацию нужно выбрать отдельно. toSortedMap.
Эталон с примером и пограничными случаями выполнен на Kotlin/JVM 2.4.20, JDK 17.