37 lines
654 B
Go
37 lines
654 B
Go
package q130
|
|
|
|
func markI(board [][]byte, x, y int) {
|
|
w, h := len(board[0]), len(board)
|
|
if x < 0 || y < 0 || x >= w || y >= h || board[y][x] != 'O' {
|
|
return
|
|
}
|
|
board[y][x] = 'I'
|
|
markI(board, x, y+1)
|
|
markI(board, x, y-1)
|
|
markI(board, x+1, y)
|
|
markI(board, x-1, y)
|
|
}
|
|
|
|
func solve(board [][]byte) {
|
|
for i := range len(board) {
|
|
markI(board, 0, i)
|
|
markI(board, len(board[0])-1, i)
|
|
}
|
|
for i := range len(board[0]) {
|
|
markI(board, i, 0)
|
|
markI(board, i, len(board)-1)
|
|
}
|
|
|
|
for y := range board {
|
|
for x := range board[0] {
|
|
switch board[y][x] {
|
|
case 'O':
|
|
board[y][x] = 'X'
|
|
case 'I':
|
|
board[y][x] = 'O'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
var _ = solve
|