![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 14.01.2010
Сообщений: 5
|
![]()
В общем суть такова, получил задание, написать программу, которая будет решать судоку. Просто тупо программу с 81 клеткой, и при нажатии кнопки чтоб все клетки правильно заполнялись.
Вроде написал... Исходник приложил. Вроде заполняет, все правильно.. но остаются нули, которые она заполнить не может, т.к. уже будет неверно... Т.е. расположение цифр идет неверное... Гланьте сорс, помогите решить... Желательно с пояснениями))) П.С. прошу не предлагать чужие сорсы, мне самому охото написать... чтоб полностью понять это... Код:
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
1) замечание не по существу. Гораздо нагляднее, если незаполенные ячейку будут заполнены не нулями, а пустой строкой.
Для этого в процедуре на onCreate: Код:
Код:
Проблему это не решает. А проблема в том, что у Вас не заполненными остаются ячейки, которые заполнить НЕВОЗМОЖНО. (попробуйте придумать, какое число должно быть вписано и убедитесь, что это число пересекается с таким же числом по горизонтали или вертикали)... К сожалению, менять нужно алгоритм заполнения. Поищите в сети, думаю, что здесь должны быть алгоритмы с возвратом (может быть, даже рекурсивные)... т.е. если пришли к тупиковой ситауции, значит нужно возвращаться на предыдущий шаг - такая расстановка недопустима, пробовать другой вариант.. Если на текущем шаге все варианты перебраны и все не приводят к решению, значит надо возвращаться на предыдущий шаг - такая расстановка недопустима, надо пробовать следущий вариант расстановки и т.д... вплоть до первого шага (это значит, что предложенное начальное заполнение поля НЕ ИМЕЕТ решения!) |
![]() |
![]() |
![]() |
#3 |
Регистрация: 14.01.2010
Сообщений: 5
|
![]()
насчет ноликов, просто так удобнее было мне... не знаю почему))
я понимаю, что если не заполняется, значит нет решения... а с возвратом не понимаю если чесно... не делал такого... |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
![]()
два вопроса Вам.
1) А Вы самостоятельно писали код формировани поля Судоку? почему спрашиваю - поиск алгоритма решения сразу дал статейку, в которой используется данный способ. Более того, названия массивов совпадают.. ![]() Так что, корни 100% из одного места растут... ![]() 2) в этой статье есть и алгоритм решения. Не пробовали разобраться?.. вот, собственно, вышеупомянутая статья: Алгоритм решения судоку на delphi Delphi блог Димаса |
![]() |
![]() |
![]() |
#5 |
Trust no one.
Старожил
Регистрация: 07.04.2009
Сообщений: 6,526
|
![]()
Алгоритм таков:
Первая волна - заполняются ячейки, которые 100% имеют 1 вариант. Вторая волна - проходим еще раз точно так же (поле изменилось) Третья .. нная волны - аналогично, пока не наткнемся на ситуацию, когда будут варианты для всех ячеек. Тогда берем поле, копируем в память несколько копий по количеству вариантов. Берем первую вариантную ячейку и в каждой копии ставим разную цифру. Затем пытаемся заполнить поле стандартным методом. Если противоречия идут - копия удаляется. Аналогично идем дальше, пока не останется только одна копия и поле не будет заполнено.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ |
![]() |
![]() |
![]() |
#6 | |
Регистрация: 14.01.2010
Сообщений: 5
|
![]() Цитата:
Я сделал поиск попроще, ну и запись... без всего лишнего... |
|
![]() |
![]() |
![]() |
#7 |
Новичок
Джуниор
Регистрация: 14.06.2011
Сообщений: 2
|
![]()
А как можно сделать, чтобы в Edit выводились случайные числа и можно было бы сделать так: Тяжелый уровень, Среднии и Легкии...подскажите ожалуйста.
|
![]() |
![]() |
![]() |
#8 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,542
|
![]()
программа — запись алгоритма на языке понятном транслятору
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Алгоритм решения судоку | Alistan | Общие вопросы C/C++ | 5 | 27.04.2011 16:00 |
Delphi судоку | fawr | Помощь студентам | 4 | 18.03.2010 23:58 |
Создание судоку | Beliuk | Паскаль, Turbo Pascal, PascalABC.NET | 3 | 18.03.2010 16:15 |
[Анти]-судоку | С.М.С | Софт | 9 | 25.04.2009 13:05 |