Sudoku: Difference between revisions
Content deleted Content added
Line 5,304:
sb &= $grid[i * 9 + j]
sb &= " "
if j == 2 or j == 5:
sb &= "| "
sb &= "\n"
if i == 2 or i == 5:
sb &= "------+------+------\n"
sb
Line 5,316 ⟶ 5,318:
proc checkValidity(self: Sudoku, v, x, y: int): bool =
for i in 0..8:
if grid[y * 9 + i] == v or grid[i * 9 + x] == v:
return false
var startX = (x div 3) * 3
var startY = (y div 3) * 3
for i in startY..startY + 2:
for j in startX..startX + 2:
if grid[i * 9 + j] == v:
return false
result = true
proc placeNumber(self: Sudoku, pos: int) =
if solved:
return
if pos == 81:
solved = true
Line 5,336 ⟶ 5,341:
grid[pos] = n
placeNumber(pos + 1)
if solved:
return
grid[pos] = 0
|