Судоку генератор сетки не делает столбцы разных чисел - PullRequest
0 голосов
/ 09 апреля 2019

Я пытаюсь сделать генератор сетки Судоку, но застрял с этим последним битом некоторое время.Я успешно сделал каждый ряд разным числом.Но теперь мне нужно, чтобы каждый номер столбца был другим, и я не могу понять, как это сделать.

Я уже пытался исключить возможность появления того же номера в верхней части, удалив этот номер из списка.Но тогда для другого ряда мне снова нужен этот номер.(Я пробовал .pop () и удаляю и удаляю)

import tkinter as tk
import random
buttonvalues = ["1","2","3","4","5","6","7","8","9"]
random.shuffle(buttonvalues)
root = tk.Tk()
root.title("Soduku")
i = 0
for x in range(9):
    for y in range(9):
        number = random.choice(buttonvalues)
        btn = tk.Button(text=number, bg="white", activebackground="black", width=2)
        btn.grid(row=y, column=x)
        i += 1
        print(number)
        if number == "1":
            buttonvalues.remove("1")  
        elif number == "2":
            buttonvalues.remove("2")
        elif number == "3":
            buttonvalues.remove("3")
        elif number == "4":
            buttonvalues.remove("4")
        elif number == "5":
            buttonvalues.remove("5")
        elif number == "6":
            buttonvalues.remove("6")
        elif number == "7":
            buttonvalues.remove("7")
        elif number == "8":
            buttonvalues.remove("8")
        elif number == "9":
            buttonvalues.remove("9")
        if not buttonvalues:
            buttonvalues = ["1","2","3","4","5","6","7","8","9"]



root.mainloop()

Я получаю ожидаемые результаты a (разные номера для каждой строки), но теперь мне нужно, чтобы все номера столбцов были разными, включая номера встроки.Может кто-нибудь помочь, пожалуйста? image

1 Ответ

0 голосов
/ 09 апреля 2019

Я бы подошел к проблеме по-другому. Начните с действительной сетки Судоко:

1 2 3 | 4 5 6 | 7 8 9
4 5 6 | 7 8 9 | 1 2 3
7 8 9 | 1 2 3 | 4 5 6
------+-------+------
2 3 4 | 5 6 7 | 8 9 1
5 6 7 | 8 9 1 | 2 3 4
8 9 1 | 2 3 4 | 5 6 7
------+-------+------
3 4 5 | 6 7 8 | 9 1 2
6 7 8 | 9 1 2 | 3 4 5
9 1 2 | 3 4 5 | 6 7 8

Затем перетасуйте сетку, чтобы правила всегда соблюдались. Вы можете поменять любой ряд из трех блоков 3х3 на любой другой ряд. Вы можете поменять любой столбец из трех блоков 3х3 на другой столбец. Внутри каждой строки блока или столбца блока вы можете поменять отдельные строки и отдельные столбцы. Наконец, вы можете переставлять числа, чтобы в разных позициях были разные числа, при условии, что перестановка одинакова по всей доске.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...