Форум сайта python.su
Уважаемые товарищи Умельцы!
Мне уже как-то помогли на одном форуме переписав код в продвинутый вариант. Я от безнадёжья сдал его, за что и был развёрнут преподом. По причине, что мы на этот уровень ещё не вышли.
Не переделывайте, пожалуйста код, так, что оно будет выше моего уровня! Спасибо за понимание!
Да и я бы хотел понять - что я не так делаю. А на вашем уровне я пока не был
Вопрос, который мне любят задавать: Для чего оно тебе?
Ответ: Такое задание дали. Построить судоку. Полностью заполненное.
Мне не нужно решение. Хочу сам к нему прийти. Препод сказал, что мы напишем сейчас и в конце года. И сравним - на сколько продвинулись. Я просто хочу знать ошибку моего вариаета.
Простите за такое гневное вступление.
Что не так:
Скрипт срабатывает крайне редко. Зависает то на одном цикле, то на другом. Редко уходит дальше 4го.
Вопрос: ПОЧЕМУ?
PS: Когда я менял for z in range(2,9): с 9 на 5 - иногда даже скрипт выполнялся до конца. При 9 - ни разу.
import random sudoku = [[],[],[],[],[],[],[],[],[]] for z in range(0,9): print(z) while len(sudoku[z])<9: r = random.randint(1,9) sudoku[z].append(r) for i in sudoku[z]: n = sudoku[z].index(i) vloj = [] for p in range(0,z): vloj.append(sudoku[p][n]) if sudoku[z].count(i) > 1 or sudoku[z][n] in vloj: del sudoku[z][-1] print() print(sudoku)
Отредактировано Tenebras (Дек. 20, 2017 05:54:24)
Офлайн
Tenebras
Ну вы же понимаете, что рандом - вещь по-идее непредсказуемая, он по-идее может в течении получаса выдавать вам одно и то же число - случайность же.
Вы слишком наивно подходите к алгоритму. Попробуйте рассуждать иначе. Сначала вам надо составить первый ряд полностью случайный.
random.shuffle([1, 2, 3, 4, 5, 6, 7, 8, 9]) #получите например [3, 5, 1, 6, 9, 8, 7, 2, 4]
random.choice([1, 2, 4, 5, 6, 7, 8, 9])
#получите например [1, 2, 3, 7, 9, 8, 6, 4, 2]
Офлайн
FishHook
Наверное понимаю. Отосплюсь и попробую осознать.
Я проверил - random разный. Он не зависает, а начинает совершать какой-то бесконечный цикл. Причину не понял.
Ваш способ пробовать через 12 часов.
Двое суток без сна)))
Офлайн
Tenebrasсмотри
Он не зависает, а начинает совершать какой-то бесконечный цикл. Причину не понял.
r = 5 while r <= 5: r = randon.randrange(0, 10)
Офлайн