Программа поиска слов Kotlin: поиск слов в 2D-массиве

Вот пример программы поиска слов Kotlin:

fun main() {
    val wordSearch = arrayOf(
        charArrayOf('A', 'B', 'C', 'D', 'E'),
        charArrayOf('F', 'G', 'H', 'I', 'J'),
        charArrayOf('K', 'L', 'M', 'N', 'O'),
        charArrayOf('P', 'Q', 'R', 'S', 'T'),
        charArrayOf('U', 'V', 'W', 'X', 'Y')
    )
    val word = "KOTLIN"
    val result = searchWord(wordSearch, word)
    if (result != null) {
        println("Word found at coordinates: (${result.startX}, ${result.startY}) to (${result.endX}, ${result.endY})")
    } else {
        println("Word not found.")
    }
}
data class SearchResult(val startX: Int, val startY: Int, val endX: Int, val endY: Int)
fun searchWord(wordSearch: Array<CharArray>, word: String): SearchResult? {
    val rows = wordSearch.size
    val cols = wordSearch[0].size
    for (i in 0 until rows) {
        for (j in 0 until cols) {
            if (wordSearch[i][j] == word[0]) {
                // Check horizontally
                if (j + word.length <= cols && wordSearch[i].slice(j until j + word.length).joinToString("") == word) {
                    return SearchResult(i, j, i, j + word.length - 1)
                }
// Check vertically
                val verticalWord = StringBuilder()
                for (k in i until rows) {
                    verticalWord.append(wordSearch[k][j])
                    if (verticalWord.length > word.length) {
                        break
                    }
                    if (verticalWord.toString() == word) {
                        return SearchResult(i, j, k, j)
                    }
                }
            }
        }
    }
    return null
}

Эта программа позволяет искать слово в двумерном массиве символов. Он ищет слово по горизонтали и вертикали и возвращает координаты начальной и конечной позиции слова, если оно найдено.