added sudoku logic, trying to get board to print

This commit is contained in:
kated
2026-06-02 10:25:31 -04:00
parent a9bedb4cde
commit 8b907c3571
11 changed files with 279 additions and 0 deletions

89
board.py Normal file
View File

@@ -0,0 +1,89 @@
import random
from cell import Cell
class Board:
def __init__(self):
self.grid = [[0 for _ in range(9)] for _ in range(9)]
self.cells = []
def generate(self):
self._fill_board()
self.create_cells()
def create_cells(self):
self.cells = []
for row in range(9):
for col in range(9):
self.cells.append(
Cell(
row=row,
col=col,
value=self.grid[row][col]
)
)
def _find_empty(self):
for row in range(9):
for col in range(9):
if self.grid[row][col] == 0:
return row, col
return None
def _valid(self, row, col, num):
if num in self.grid[row]:
return False
for r in range(9):
if self.grid[r][col] == num:
return False
box_row = (row // 3) * 3
box_col = (col // 3) * 3
for r in range(box_row, box_row + 3):
for c in range(box_col, box_col + 3):
if self.grid[r][c] == num:
return False
return True
def _fill_board(self):
empty = self._find_empty()
if empty is None:
return True
row, col = empty
nums = list(range(1, 10))
random.shuffle(nums)
for num in nums:
if self._valid(row, col, num):
self.grid[row][col] = num
if self._fill_board():
return True
self.grid[row][col] = 0
return False