Я пытаюсь реализовать это но у меня получается не так:
У меня вылетает при первом вызове функции(проверке)
Код:
я поставил функцию после нажатия клавиши(куда вписывают числа)
Помогите переписать как-то проверку квадратов
У меня вылетает при первом вызове функции(проверке)
Код:
Python:
def checkCells(self, pos):
lastPos0 = pos[0]
# по x
for i in range(cellsInGrid[0]):
pos = i, pos[1]
square = self.returnToSquare(pos)
x, y = pos[0], pos[1]
xMap = self.map[x] # в столбик
yMap = [self.map[ii][0] for ii in range(cellsInGrid[1])] # в строку
xr = set()
zeros = 0
for xn in range(len(xMap)):
if self.map[xn][y]:
xr.add(self.map[xn][y])
else:
zeros += 1
if len(xr) + zeros != cellsInGrid[0]:
self.errorCells.append(list(pos))
else:
if list(pos) in self.errorCells:
self.errorCells.remove(list(pos))
pos = lastPos0, pos[1]
lastPos1 = pos[1]
# по y
for j in range(cellsInGrid[1]):
pos = pos[0], j
square = self.returnToSquare(pos)
x, y = pos[0], pos[1]
xMap = self.map[x] # в столбик
yMap = [self.map[ii][0] for ii in range(cellsInGrid[1])] # в строку
yr = set()
zeros = 0
for yn in range(len(yMap)):
if self.map[x][yn]:
yr.add(self.map[x][yn])
else:
zeros += 1
if len(yr) + zeros != cellsInGrid[1]:
self.errorCells.append(list(pos))
else:
if list(pos) in self.errorCells:
self.errorCells.remove(list(pos))
pos = lastPos0, lastPos1
# квадраты
minPos = minX, minY = self.returnToSquare(pos) % 3 * 3, \
self.returnToSquare(pos) // 3 * 3
zeros = 0
squareSet = set()
for i in range(3):
for j in range(3):
now = [minX + i, minY + j]
if self.map[now[0]][now[1]]:
squareSet.add(self.map[now[0]][now[1]])
else:
zeros += 1
if len(squareSet) + zeros == 9:
if all([minX + a, minY + b] for a in range(3) for b in range(3)):
[self.errorCells.remove([minX + a, minY + b]) for a in range(3) for b in range(3)]
else:
[self.errorCells.append([minX + a, minY + b]) for a in range(3) for b in range(3)]
Помогите переписать как-то проверку квадратов
Последнее редактирование: