KG
val alphabet = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя".let { it + it.toUpperCase() }
val mapping = alphabet.map { it to "mapping from $it to anything" }.sortedBy { it.first }
//этот mapping только для примера, что символ можно отбразить на что угодно
var currentRange = mutableListOf(mapping[0])
val ranges = mutableListOf(currentRange)
for (i in 1 until mapping.size) {
if (mapping[i].first != mapping[i - 1].first.inc()) {
currentRange = mutableListOf()
ranges.add(currentRange)
}
currentRange.add(mapping[i])
}
println(ranges)
val translate = { c: Char ->
val range = ranges.first { it[0].first <= c }
val index = c.minus(range[0].first)
range[index].second
}
println(translate('Ё'))
Хм, правильно помню, что символ "Ё" идёт отдельно от диапазона остальной кириллицы