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 килобайт ) Кол-во скачиваний: 2743


Вот образец содержимого файла 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 188
Пол: Мужской
Реальное имя: Александр

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


может лучше использовать разделитель между числами?
было бы удобнее составлять...


--------------------
Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
 Оффлайн  Профиль  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

 





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