Function 如何使字符串仅在适合2d数组时打印

Function 如何使字符串仅在适合2d数组时打印,function,Function,我有一个二维数组,我用它来做一个单词搜索拼图。我对每个单词都有一个随机的开头和方向。我不知道如何让我的方法打印字符串,而不是打印合适的字符串 fun loop(){ // for (word in wordList) { // // testWord(word) // } testWord("StayInTheBoX123456") } fun testWord(football:

我有一个二维数组,我用它来做一个单词搜索拼图。我对每个单词都有一个随机的开头和方向。我不知道如何让我的方法打印字符串,而不是打印合适的字符串


    fun loop(){
//        for (word in wordList) {
//
//            testWord(word)
//        }

        testWord("StayInTheBoX123456")
    }

    fun testWord(football:String) {//defines one variable : Boolean
        var row = ((0..(rows - 1)))
        var col = ((0..(cols - 1)))
        // var word = "hello"
//if (football.length < 0 && )
         var dirLength = football.length

        for (letter in football) {
                        when (dir) {
                            "north" -> {

                                board[row--][col] = letter

                            }
                           
                            }

                        }
                }

            }
    

有趣的循环(){
//for(单词列表中的单词){
//
//测试字
//        }
测试字(“存放在123456号盒子里”)
}
有趣的测试词(football:String){//定义了一个变量:Boolean
变量行=((0..(行-1)))
变量列=((0..(列-1)))
//var word=“你好”
//如果(足球长度<0&&)
var dirLength=football.length
(足球中的字母){
何时(dir){
“北”->{
板[行--][列]=字母
}
}
}
}
}

我昨天不是看到了这个问题吗,来自其他人,在示例代码中使用了相同的奇怪的
football
参数名称

要检查它是否合适,您需要计算出最后一个字母的行和列,并检查这些值是否在网格边界内。你可以通过计算一个从开始的偏移量来实现,这取决于单词的方向

// number of letters after the first one (i.e. steps to the end)
val extraLetters = football.length - 1

val endLetterRow = row + when(dir) {
    "northEast", "east", "southEast" -> extraLetters * -1 // makes it negative
    "northWest", "west", "southWest" -> extraLetters
    else -> 0 // north or south - no movement along the row
}
列的处理相同,并计算它们是否都在网格边界内。我个人会把它放在另一个函数中,这样你就可以用inbounds调用
is了。另外,随机尝试不同的起始位置也不是一个好主意,最好迭代所有剩余的起始位置,然后你会找到一个有效的起始位置,或者你会知道没有起始位置,你可以停止