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

> Судоку, новое повальное увлечение
Lapp
сообщение 4.05.2006 5:46
Сообщение #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 килобайт ) Кол-во скачиваний: 2278


Вот образец содержимого файла 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 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
X.XaM_MaX.X
сообщение 9.03.2007 18:19
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 33
Пол: Мужской

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


Короче часть кода которая на ходу создавала "расклады" имеющие решения blum.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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


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

 



- Текстовая версия 19.06.2025 0:23
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"