Относительно проблемы в моем коде генератора матрицы судоку - PullRequest
0 голосов
/ 30 апреля 2020

Я знаю, что что-то не так, но не знаю точно, в чем проблема в моем генераторе судоку 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)
...