Я знаю, что что-то не так, но не знаю точно, в чем проблема в моем генераторе судоку 9 * 9, может кто-нибудь помочь, пожалуйста
Мне нужно знать, в чем проблема с кодом и почему он придерживается у него нет нового номера, который будет выделен в этой позиции, потому что все номера уже выделены в ряду, клоуне или блоке. Спасибо заранее
import random
import numpy
suko = numpy.zeros(shape=(9, 9), dtype=int)
i=0
while(i!=9):
j=0
while(j!=9):
print(suko)
check=0
numlo=random.randint(1, 9)
#for making sure no same number occurs in same row or in same column
for x in range(0, 9):
if numlo == suko[i,x]:
check += 100
else:
check += 1
if numlo == suko[x,j]:
check += 100
else:
check += 1
#for making sure no same number occurs in a block
if j == 0 or j == 1 or j == 2:
if i == 0 or i == 1 or i == 2:
for a in range(0, 3):
for b in range(0, 3):
if numlo == suko[a, b]:
check += 100
if i == 3 or i == 4 or i == 5:
for a in range(3, 6):
for b in range(0, 3):
if numlo == suko[a, b]:
check += 100
if i == 6 or i == 7 or i == 8:
for a in range(6, 9):
for b in range(0, 3):
if numlo == suko[a, b]:
check += 100
elif j == 3 or j == 4 or j == 5:
if i == 0 or i == 1 or i == 2:
for a in range(0, 3):
for b in range(3, 6):
if numlo == suko[a, b]:
check += 100
if i == 3 or i == 4 or i == 5:
for a in range(3, 6):
for b in range(3, 6):
if numlo == suko[a, b]:
check += 100
if i == 6 or i == 7 or i == 8:
for a in range(6, 9):
for b in range(3, 6):
if numlo == suko[a, b]:
check += 100
elif j == 6 or j == 7 or j == 8:
if i == 0 or i == 1 or i == 2:
for a in range(0, 3):
for b in range(6, 9):
if numlo == suko[a, b]:
check += 100
if i == 3 or i == 4 or i == 5:
for a in range(3, 6):
for b in range(6, 9):
if numlo == suko[a, b]:
check += 100
if i == 6 or i == 7 or i == 8:
for a in range(6, 9):
for b in range(6, 9):
if numlo == suko[a, b]:
check += 100
if check < 100:
suko[i, j] = numlo
j+=1
i+=1
print(suko)