Печать простого массива судоку - PullRequest
1 голос
/ 16 февраля 2020

Таким образом, мой код в настоящее время пропускает восьмой индекс массива и помещает его вниз на 1 строку. Я новичок в kotlin, но, честно говоря, понятия не имею, зачем он это делает.

fun main() {
    val board = arrayOf(
        arrayOf(7, 8, 0, 4, 0, 0, 1, 2, 0),
        arrayOf(6, 0, 0, 0, 7, 5, 0, 0, 9),
        arrayOf(0, 0, 0, 6, 0, 1, 0, 7, 8),
        arrayOf(0, 0, 7, 0, 4, 0, 2, 6, 0),
        arrayOf(0, 0, 1, 0, 5, 0, 9, 3, 0),
        arrayOf(9, 0, 4, 0, 6, 0, 0, 0, 5),
        arrayOf(0, 7, 0, 3, 0, 0, 0, 1, 2),
        arrayOf(1, 2, 0, 0, 0, 7, 4, 0, 0),
        arrayOf(0, 4, 9, 2, 0, 6, 0, 0, 7)
    )
    for (row in 0 until board.size) {
        if(row % 3 == 0 && row != 0) {
        println(" - - - - - - - - - " )
        }
            for(col in 0 until board.size) {
               if(col == 8){
                    println(" ")
                }
                if(col % 3 == 0 && col != 0) {
                print(" |")
                }
                print(" ")
                print(board[row][col])
            }
    }
}

С выводом

7 8 0 | 4 0 0 | 1 2 
 0 6 0 0 | 0 7 5 | 0 0 
 9 0 0 0 | 6 0 1 | 0 7 
 8 - - - - - - - - - 
 0 0 7 | 0 4 0 | 2 6 
 0 0 0 1 | 0 5 0 | 9 3 
 0 9 0 4 | 0 6 0 | 0 0 
 5 - - - - - - - - - 
 0 7 0 | 3 0 0 | 0 1 
 2 1 2 0 | 0 0 7 | 4 0 
 0 0 4 9 | 2 0 6 | 0 0 
 7

Ответы [ 2 ]

2 голосов
/ 16 февраля 2020

Вы добавляете новую внутреннюю строку для l oop, которая фактически требуется после нее. Я изменил ваш код следующим образом:

for (row in 0 until board.size) {
    if(row % 3 == 0 && row != 0) {
        println(" - - - - - - - - - " )
    }
    for(col in 0 until board.size) {
        if(col % 3 == 0 && col != 0) {
            print(" |")
        }
        print(" " +board[row][col])
    }
    println()
}
1 голос
/ 16 февраля 2020

Это работает безупречно в соответствии с вашими требованиями (как вы хотели, чтобы конечные пробелы до и после)

Код:

val board = arrayOf(
    arrayOf(7, 8, 0, 4, 0, 0, 1, 2, 0),
    arrayOf(6, 0, 0, 0, 7, 5, 0, 0, 9),
    arrayOf(0, 0, 0, 6, 0, 1, 0, 7, 8),
    arrayOf(0, 0, 7, 0, 4, 0, 2, 6, 0),
    arrayOf(0, 0, 1, 0, 5, 0, 9, 3, 0),
    arrayOf(9, 0, 4, 0, 6, 0, 0, 0, 5),
    arrayOf(0, 7, 0, 3, 0, 0, 0, 1, 2),
    arrayOf(1, 2, 0, 0, 0, 7, 4, 0, 0),
    arrayOf(0, 4, 9, 2, 0, 6, 0, 0, 7)
)
for (row in board.indices) {
    if (row % 3 == 0 && row != 0) {
        println(" - - - - - - - - - - - ")
    }

    for (col in board.indices) {
        if (col % 3 == 0 && col != 0) {
            print(" |")
        }
        print(" " + board[row][col])
    }
    println()
}

Результат:

 7 8 0 | 4 0 0 | 1 2 0 
 6 0 0 | 0 7 5 | 0 0 9 
 0 0 0 | 6 0 1 | 0 7 8 
 - - - - - - - - - - - 
 0 0 7 | 0 4 0 | 2 6 0 
 0 0 1 | 0 5 0 | 9 3 0 
 9 0 4 | 0 6 0 | 0 0 5 
 - - - - - - - - - - - 
 0 7 0 | 3 0 0 | 0 1 2 
 1 2 0 | 0 0 7 | 4 0 0 
 0 4 9 | 2 0 6 | 0 0 7 

Редактировать: <>.indices это просто короткое расширение для 0 until <>.size

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...