![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Участник клуба
Регистрация: 29.12.2008
Сообщений: 1,598
|
![]()
Доброй ночи. Хотелось бы узнать кто - нибудь занимался созданием программ для решения судоку, если да, то насколько успешно. Пробовал разные варианты с логикой, получилось, что если код универсальный для всех степеней сложности, то обработка занимает большое время вплоть до нескольких часов.
|
![]() |
![]() |
![]() |
#2 |
Особый статус
Участник клуба
Регистрация: 24.11.2008
Сообщений: 1,535
|
![]()
Не может быть! Точнее, не должно. Попробуйте в квадрате 3 на 3.
Формула 1 (календарь чемпионата-2016): 26.11.2016 15:55 — Абу-Даби: http://ru.wikipedia.org/wiki/Гран-при_Абу-Даби — (квалификация)! Эфир: http://lion-tv.com/28-match-tv.html
|
![]() |
![]() |
![]() |
#3 |
Участник клуба
Регистрация: 29.12.2008
Сообщений: 1,598
|
![]()
то, что квадрат 3 на 3 это так, и их там 9, плюс в некоторых случаях числа недолжны повторяться и по диагоналям. Дело не в этом, есть случаи, когда в одну ячейку подходит одна цифра на нескольких последовательных этапах обработки, тогда программа всё отлично и быстро расчитывает. А вот если создается ситуация, когда в ячейку подходит два, три и более значений, вот тогда и проблема. Сделал, чтобы в такой ситуаци программа брала число подставляла и производила проверку на совпадение, если числа не повторяются, то это число сохраняется и расчёт продолжается. При таком алгоритме может возникнуть ошибка вначале расчёта, что и происходит( к примеру если число взято неправельное для конечного результата, но в данный момен работы оно проходит все проверки). Так вот можно сделать полное заполнение нескольких квадратов, а дальше производить расчёт, если расчёт не верен изменять значение в последней ячейки, по достижению в ней числа 9, производить сброс в этой ячейки и увеличивать значение на еденицу больше в предыдущей в результате для одного квадрата получаем 9^9 комбинаций или 387 милин 420тыс 489 комбинации, а если брать несколько квадратов, при этом необходимо после каждого изменения значения проводить проверку на совпадение.!!!!
|
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 29.12.2008
Сообщений: 1,598
|
![]()
работает! восьмой уровень сложности в среднем 8 минут.
|
![]() |
![]() |
![]() |
#5 |
Участник клуба
Регистрация: 04.10.2008
Сообщений: 1,485
|
![]()
думаю легче было бы просчитать все возможные варианты расположения цифр вообще, и искать среди них подходящий для конкретного случая (с совпадающими клетками)
занимать будет много места, но производительность станет гораздо выше свободен... |
![]() |
![]() |
![]() |
#6 | |
Заблокирован
Старожил
Регистрация: 20.07.2008
Сообщений: 4,032
|
![]() Цитата:
![]() |
|
![]() |
![]() |
![]() |
#7 |
Участник клуба
Регистрация: 29.12.2008
Сообщений: 1,598
|
![]()
А вы пощитайте сколько это комбинаций, я примерно так тоже думал. Оказалось не проще, да и структура кросводов меняется, а переправить код проще чем переписывать заново, в любом случае попробуйте свой вариант если время есть и сравните, возможно Вы и правы.
|
![]() |
![]() |
![]() |
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Тетрис! Логика и возможности. | Iceman | Общие вопросы Delphi | 4 | 04.01.2009 01:56 |
Логика монстра(ов) | ChukCha | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 15 | 19.08.2008 15:31 |
Метод перебора для нахождения решения "Судоку" | ДЖО | Помощь студентам | 23 | 04.06.2008 22:29 |
USB логика на выходах | StartMis | Общие вопросы Delphi | 2 | 26.05.2008 18:03 |