Golang问题数组数独-grid [i] [j] [0]

问题描述 投票:0回答:1

[嗨,我对此seenRow[grid[i][j][0] - 49]的确切代码有疑问。这是什么?


func sudoku2(grid [][]string) bool {
    for i := 0; i < 9; i++ {
        var seenRow [9]bool
        var seenCol [9]bool
        var seenSub [9]bool
        for j := 0; j < 9; j++ {
            if grid[i][j] != "." {
                if seenRow[grid[i][j][0] - 49] {
                    return false
                }
                seenRow[grid[i][j][0] - 49] = true
            }
            if grid[j][i] != "." {
                if seenCol[grid[j][i][0] - 49] {
                    return false
                }
                seenCol[grid[j][i][0] - 49] = true
            }
            x := i%3*3 + j%3
            y := i/3*3 + j/3
            if grid[y][x] != "." {
                if seenSub[grid[y][x][0] - 49] {
                    return false
                }
                seenSub[grid[y][x][0] - 49] = true
            }
        }
    }
    return true
}

arrays go sudoku
1个回答
0
投票
seenRow[grid[i][j][0] - 49]

seenRowstring的切片,因此前两个索引[i][j]grid[i][j]是字符串,grid[i][j][0]是第一个字节值的整数形式的数值。


0
投票

看起来它是对hashmap的模拟。 49是字符1的ASCII字符值,因此,如果单元格具有值1cell-49将给出0,如果单元格具有2cell-49将给出1,等等。并且seenSub数组跟踪看到的数字。如果seenSub[i]true,则可以看到数字i+1

© www.soinside.com 2019 - 2024. All rights reserved.