IPB
ЛогинПароль:

> Судоку, новое повальное увлечение
сообщение
Сообщение #1


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Кто знаком с игрой Судоку?
Она появилась не очень давно, несколько лет назад. Я не знаю, насколько она сейчас распространена в России, поэтому рассказываю подробно (извините, если это излишне). По смыслу и по виду напоминает кроссворд, но в отличие от него она не буквенная, а цифровая. Хотя, цифры там используются только как значки - никаких операций над ними (сложения и т.п.) не проводится. Говорят (и я охотно этому верю), что она прежде всего завоевала популярность в Японии, потому что бедные японцы, ввиду особенностей своей письменности, лишены возможности разгадывать кроссворды - хотя появилась она на Западе. Если сейчас зайти в любой книжный, то прямо у дверей увишь специальный стенд, на котором стоит десятка два-три как тонких так и очень толстых книг с этими головоломками..

Игра довольно тупая, но видя такой бешеный успех за короткое время, я заинтересовался ей. А тут ее стали еще публиковать в университетской газете - не попробовать я просто не мог smile.gif. Как ни странно, это оказалось затягивающим, и на протяжении пары недель я свою ежедневную чашку кофе (см. фото в моем профайле smile.gif ) стал посвящать этому занятию. Конечно, наскучило довольно быстро, но за это время я успел набросать небольшую прогу (сначала на Паскале, а потом на Дельфи), которая решала эти задачи. Вот я и выкладываю тут свой первоначальный паскалевский вариант..

Теперь о правилах. Поле представляет собой квадрат 9х9 клеток (поделенный еще и на подквадраты 3х3), в некоторых из которых уже стоят циферки, а в остальные их нужно вписать. В результате в каждой клетке должно стоять по цифре от 1 до 9 (ноль не участвует!), причем так, чтобы в любом столбце и в любой строчке присутствовали все девять цифр. Более того, в каждом подквадрате тоже должны быть все цифры, каждой по одной.

Правила очень простые. Существуют несколько методик решения, стратегий и тактик, которые разжевываются в книжках, но суть от этого не меняется. Ниже я привожу фото из университетской газеты (Bruin Daily, Apr 18, 2006), чтобы те, кто не видел, поимели представление.
Прикрепленное изображение
Ниже идет текст программы, которая решает головоломку. Алгоритм такой - берем перекрестье каждой строки с каждым столбцом, и смотрим набор цифр, который они содержат. Если в нем не хватает ровно одной цифры - вписываем ее в пересечение. Могут быть и другие алгоритмы, это лишь один из возможных. Одним шагом считается полный проход по полю, если за шаг находятся несколько таких цифр - ставятся все. Если не будет найдено ни одной, программа выдаст сообщение "множественный выбор" и остановится. Смысл в том, что нужно пробовать несколько разных вариантов.

Я предлагаю народу попробовать и, может быть, предложить свои алгоритмы. Код не вычищен, прошу извинить за огрехи. Но он работает (проверено на FPC и TP). Программа требует наличие файла sudoku.dat - он текстовый, это просто построковая запись квадрата, я прилагаю образец ниже.

Прикрепленный файл  sudoku_1.pas ( 2.13 килобайт ) Кол-во скачиваний: 2747


Вот образец содержимого файла sudoku.dat. Важно: файл позиционный, то есть цифры сдигать нельзя. Более того, в строчке должны обязательно присутствовать все девять знаков (цифры и пробелы) - закрасьте приведенный пример блоком, чтобы увидеть пробелы, присутствующие там. Цифра обозначется цифрой, пустое место - пробелом или любым знаком (не цифрой или нулем). Лишних пробелов тоже быть не должно!
  8   2  
51 3
4 9 63
53 7
8 96
7 9
6 5 1
3 4
1 8 2

ВОт и все smile.gif
Кому понравилось - откликайтесь.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 117
Пол: Мужской
Реальное имя: Богдан

Репутация: -  11  +


По поводу тестирования: проверял на таком файле

8
85 1
71 6
1
6 4 5
54 71
4 18 7
6 5
6


програмка сразу вылетает, хотя решение существует
Код

546 718 392
298 534 716
713 296 458

971 365 824
632 841 975
854 927 163

425 189 637
369 472 581
187 653 249


P.S Задача и решения взято с одноименной программы
если надо могу выложить программу(чуть больше двух мегов)

Сообщение отредактировано: volvo -


--------------------
Лао-Цзы :
Знать много и не выставлять себя знающим есть нравственная высота. Знать мало и выставлять себя знающим есть болезнь. Только понимая эту болезнь, мы можем избавиться от нее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
lapp   Судоку   4.05.2006 9:46
Bokul   Вы как будто мои мысли читаете :lol: , я тоже щас …   4.05.2006 10:28
lapp   Вы как будто мои мысли читаете :lol: , ..... whil…   4.05.2006 10:54
Bokul   По поводу тестирования: проверял на таком файле …   4.05.2006 10:56
lapp   програмка сразу вылетает, хотя решение существует…   4.05.2006 11:28
GoodWind   может лучше использовать разделитель между числами…   4.05.2006 14:17
lapp   было бы удобнее составлять... Дело в том, что иг…   4.05.2006 16:31
lapp   Я немного подправил алгоритм: добавил перебор при …   5.05.2006 16:39
Bokul   Жалко что тема затухла не найдя решения генерации …   25.07.2006 11:11
lapp   Жалко что тема затухла не найдя решения генерации…   25.07.2006 11:53
Bokul   Почему же, мне так интересно. :) Я так и не пон…   26.07.2006 5:31
DFooz   http://rapidshare.de/files/29767339/ProSud.rar вот…   31.08.2006 19:21
Dreamer   Всем привет! Моё хобби - программирование в ср…   29.01.2007 20:11
Michael_Rybak   (Не смотрел прогу, просто говорю) На МАН можешь …   29.01.2007 21:33
Dreamer   (Не смотрел прогу, просто говорю) На МАН можешь п…   30.01.2007 16:27
Michael_Rybak   С Паскалем (ну Дельфи, но все-таки) у меня было аб…   30.01.2007 18:38
Dreamer   С Паскалем (ну Дельфи, но все-таки) у меня было а…   3.03.2007 3:48
klem4   А что за МАН такой ?   30.01.2007 18:44
Michael_Rybak   Малая Академия Наук (ср. НАН = Национальная Академ…   30.01.2007 23:27
Dreamer   Решалка кстати дома лежит... недоднланная... алгор…   31.01.2007 17:04
Michael_Rybak   Хочешь, можем обсудить алгоритм менее пенный, кото…   31.01.2007 22:02
Dreamer   Хочешь, можем обсудить алгоритм менее пенный, кот…   5.02.2007 19:23
Michael_Rybak   Есс!!! Доделал! То что нужно, дод…   6.02.2007 4:01
Dreamer   Молодец :) Только если решение не единственно, …   6.02.2007 17:14
NightmareZ   Лажа. Прога пишется за день на коленке. Вотъ мой в…   15.02.2007 21:47
X.XaM_MaX.X   А я делал алгоритм построение карт..не поверите...…   9.03.2007 1:32
Lapp   делал алгоритм построение карт..не поверите...мес…   9.03.2007 14:43
X.XaM_MaX.X   Короче часть кода которая на ходу создавала …   9.03.2007 22:19
Lapp   создавала "расклады" имеющие решения Д…   10.03.2007 6:57
X.XaM_MaX.X   Сложность у меня подразумевает процент возможного …   20.04.2007 1:33
X.XaM_MaX.X   О я вспомнил что скоро будет gbax 2007(это соревно…   23.04.2007 2:33
nevolia   Помогите срочно мне нада курсовую написать игру Су…   3.05.2007 1:07
guaro   nevolia да... и я собрался писать курсовик по судо…   19.05.2007 17:07
Game-lord   Хотите расскажу как генерировать карты, которые в …   26.05.2007 21:56
wingman   Далее берем первые три столбца и меняем их места…   8.01.2008 23:54
Lir   По моему даже не имеет значение какие строки и ст…   20.03.2008 22:18
Djoker   Здравствуйте! Я написал генератор карт судоку,…   13.04.2008 20:26
melon   всем привет, у меня курсовая на тему СУДОКУ, к сож…   3.06.2011 19:11
Lapp   А что ты хочешь-то, melon? Прочитать файл, нарисо…   4.06.2011 14:54
melon   А что ты хочешь-то, melon? Прочитать файл, нарис…   4.06.2011 22:07
Lapp   у меня тема курсовой написать игру СУДОКУ в паскал…   5.06.2011 6:37
Lapp   Короче, melon, рисовать таблицу вручную - врагу не…   4.06.2011 18:37


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 28.04.2024 16:38
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name