Модераторы: Akella
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Решение SUDOKU методами DB2 (быстрый ответ), Показывает возможности DB2. 
:(
    Опции темы
LKhiger
Дата 7.9.2009, 07:48 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 7.9.2009

Репутация: 2
Всего: 2



Я выложил это всё в США, где я работаю ведущим программистом в крупной финансовой фирме.
Но похоже ребятам не до поэзии.... Вспоминая прекрасные годы, когда я работал программистом в Минске, решил показать мою формулу русскоговорящим.


Итак это одна формула, которая требует DB2 версии 8, или выше. Думаю вам будет интересно.

Стартуем с исходной головоломки SUDOKU, которую вы можете найти в любой газете, или в книге, или в Инете.

Заменяем пропуски в таблице (неизвестные цифры от 1 до 9) цифрой "0". Получаем следующую исходную таблицу (например):

090100000 
037020000 
060908004 
009070000 
206000107 
000050300 
700603050 
000080630 
000002040 


Вводим линии в таблицу SudokuIn (line, sudoku_str) (найдёте в формуле из прикреплённого файла и поймёте как).

Запускаем SQL на исполнение, получаем результативную таблицу:


| 5 | 9 | 4 | 1 | 6 | 7 | 8 | 2 | 3 | 
| 8 | 3 | 7 | 4 | 2 | 5 | 9 | 1 | 6 | 
| 1 | 6 | 2 | 9 | 3 | 8 | 5 | 7 | 4 | 
| 3 | 8 | 9 | 2 | 7 | 1 | 4 | 6 | 5 | 
| 2 | 5 | 6 | 3 | 4 | 9 | 1 | 8 | 7 | 
| 4 | 7 | 1 | 8 | 5 | 6 | 3 | 9 | 2 | 
| 7 | 4 | 8 | 6 | 1 | 3 | 2 | 5 | 9 | 
| 9 | 2 | 5 | 7 | 8 | 4 | 6 | 3 | 1 | 
| 6 | 1 | 3 | 5 | 9 | 2 | 7 | 4 | 8 | 


Шлите отзывы. smile  smile  smile 

С уважением, Леонид Хигер.


Это сообщение отредактировал(а) LKhiger - 11.10.2009, 20:20

Присоединённый файл ( Кол-во скачиваний: 28 )
Присоединённый файл  Absolute_SUDOKU_Solver_v5_Weight_1_.txt 29,45 Kb
PM MAIL   Вверх
LKhiger
Дата 7.9.2009, 08:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 7.9.2009

Репутация: 2
Всего: 2



Это очень (на мой взгляд) хорошая реклама для DB2.

Но не забывайте ссылаться на автора (Леонид Хигер) при использовании.


С уважением lkhiger. smile 
PM MAIL   Вверх
Viroman
Дата 7.9.2009, 08:38 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 140
Регистрация: 28.7.2008

Репутация: нет
Всего: нет



Люблю судоку играть, но только на перегонки и на бумаге, а так не интересно, нравится, что чаще выигрываю, точнее против тех, кого играл, всегда, на ум не претендую. А как дела обстоят с судоку, где множество решений? Да и на db2 спрограммить эдакое, это же как в анекдоте одном про зубврача.
Приходит пациент к зубному врачу зуб вырывать, ложится он на кушетку и тут врач берёт щипцы и лезет пациенту в задницу. Пациент от такого в шоке: "вы что совсем обалдели, вы что мне в жопу лезете." А врач отвечает: "А у нас милок, всё через жопу делается".
Собственно, можно зуб вырвать и через задницу, думаю, зубной врач отважившийся на такой шаг, будет смело записан в поэты зубного врачевательства smile
А в остальном, молодец.
PM MAIL   Вверх
LKhiger
Дата 7.9.2009, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 7.9.2009

Репутация: 2
Всего: 2



Кроме реализма, в искусстве, существует и абстракционизм.

Похоже, кое-кому, гланды удалили через зад. Хотел, чтобы вы поняли, что красками можно рисовать картины, а не только красить стены (за умеренное бабло).

А в основном - вы молодец. Первым отреагировали. Шустряк, не иначе !


Lenny. smile  smile  smile 
PM MAIL   Вверх
LKhiger
Дата 7.9.2009, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 7.9.2009

Репутация: 2
Всего: 2



Цитата(Viroman @ 7.9.2009,  08:38)
Люблю судоку играть, но только на перегонки и на бумаге, а так не интересно, нравится, что чаще выигрываю, точнее против тех, кого играл, всегда, на ум не претендую. А как дела обстоят с судоку, где множество решений? Да и на db2 спрограммить эдакое, это же как в анекдоте одном про зубврача.
Приходит пациент к зубному врачу зуб вырывать, ложится он на кушетку и тут врач берёт щипцы и лезет пациенту в задницу. Пациент от такого в шоке: "вы что совсем обалдели, вы что мне в жопу лезете." А врач отвечает: "А у нас милок, всё через жопу делается".
Собственно, можно зуб вырвать и через задницу, думаю, зубной врач отважившийся на такой шаг, будет смело записан в поэты зубного врачевательства smile
А в остальном, молодец.


Кстати, если вы такой любитель соревнований в Судоку, можете посоревноваться с моей машиной для решения.

О результатах сообщите. Приму любую критику с удовольствием.

Лёня Х. smile  smile  smile 
PM MAIL   Вверх
LKhiger
  Дата 8.9.2009, 03:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 7.9.2009

Репутация: 2
Всего: 2



For everybody who loves the simple ideas and strong algorithms I found another way to solve the sudoku puzzles. 

This algorithm based on the simple idea: 

If in all lines, columns and regions we have all numbers from 1 to 9 we have also the same summaries of these numbers 
Sum(i) = Sum(j) = Sum(region) = 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 = 45. (marked Sij.S)
But this is not enough to solve Sudoku. 

That's why I used the Sum of the power(2, Aij) = 2^1 + 2^2 +... + 2^8 + 2^9 = 1022.(marked Sij.Y) 

We created the system of 81 equations and let DB2 find solution of it.

If input was correct - Sudoku solved ! 

But it's running for 3 to 5 minutes (compare to seconds) and I'll continue improve performance of this query. 

If you'll find out something  to improve performance of it I'll appreciate your solution.  smile  smile  smile 

One is good. The query become shorter 3 times to compare to previous.

Thanks, lenny Khiger


Это сообщение отредактировал(а) LKhiger - 11.10.2009, 20:21

Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  Absolute_SUDOKU_Solver_v5_Weight_1_.txt 29,45 Kb
PM MAIL   Вверх
LKhiger
Дата 9.9.2009, 04:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 7.9.2009

Репутация: 2
Всего: 2



We can change the input table (SudokuIn) to the user created table instead of sysibm.sysdummy1: 

SudokuIn (line, sudoku_str) as 
( 
select 1, '090100000' 
from sysibm.sysdummy1 
union all 
select 2, '037020000' 
from sysibm.sysdummy1 
union all 
......... 
union all 
select 9, '..... )  

The structure of table could be any, for example:  

Sudoku_tbl 
(sud_id integer not null, 
sud_line_no integer not null, 
sud_line varchar(100) not null, 
sud_oper char(3) 
) 

In this case we have to insert into table before: 

Insert into  Sudoku_tbl 
select 123, 1, '090100000', 'in' 
from sysibm.sysdummy1 
union all 
select 123, 2, '037020000', 'in' 
from sysibm.sysdummy1 
union all 
......... 
union all 
select 123, 9, '....., 'in'  
from sysibm.sysdummy1 

Then we have to change SudokuIn: 
 
SudokuIn (line, sudoku_str) as 
( 
select  sud_line_no, sud_line    
from   Sudoku_tbl 
where   sud_id = 123 
  and    sud_oper = 'in' 
) 

Finally at the end we have to insert the lines into Sudoku_tbl where we change sud_oper from 'in' to out. 

Thanks, Lenny

Это сообщение отредактировал(а) LKhiger - 9.9.2009, 04:45
PM MAIL   Вверх
Zloxa
Дата 11.9.2009, 00:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: нет
Всего: 161



Цитата(LKhiger @  7.9.2009,  07:48 Найти цитируемый пост)
Но похоже ребятам не до поэзии....

Обажаю поэзию на sql.
Очень нравятся декларативные решения.
Однако когда смотришь на без малого полторы тыщи строк кода, желание проникнуться отпадает.

Давно думал порешать судоку Ораклом.
Если смогу - помереимся перформансами ;)


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
LKhiger
Дата 11.9.2009, 06:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 7.9.2009

Репутация: 2
Всего: 2



Если короче, то получится стихотворение, а так получилась поэма, или роман в стихах.

Есть у меня и короткое решение, но это, как ни странно самое быстрое.

Спасибо за ответ. Сразимся ! smile  smile 

Lenny
PM MAIL   Вверх
LKhiger
  Дата 7.10.2009, 04:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 7.9.2009

Репутация: 2
Всего: 2



Версия решателя Судоку, который решает все типы любой сложности, 
включая Судоку с неоднозначными решениями. smile  smile  smile 

Lenny Khiger, ADSPA&VP.

Это сообщение отредактировал(а) LKhiger - 7.10.2009, 14:30

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  Absolute_SUDOKU_Solver_v5_Weight_1_.txt 29,45 Kb
PM MAIL   Вверх
LKhiger
  Дата 10.10.2009, 05:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 7.9.2009

Репутация: 2
Всего: 2



Today "AM", NY pg.30 Level-4 Sudoku: smile 

Код

Sudoku Line

XX5X4X8XX
73XXXXX65
8XXXXX3X2
XXX97XXX6
XXXXXXXXX
1X6X32XXX
3X4XXXXX7
56XXXXX43
XX1X5XXXX

Line 1: | 6 | 1 | 5 | 2 | 4 | 3 | 8 | 7 | 9 | 
Line 2: | 7 | 3 | 2 | 8 | 1 | 9 | 4 | 6 | 5 | 
Line 3: | 8 | 4 | 9 | 7 | 6 | 5 | 3 | 1 | 2 | 
Line 4: | 4 | 5 | 3 | 9 | 7 | 1 | 2 | 8 | 6 | 
Line 5: | 2 | 9 | 7 | 4 | 8 | 6 | 5 | 3 | 1 | 
Line 6: | 1 | 8 | 6 | 5 | 3 | 2 | 7 | 9 | 4 | 
Line 7: | 3 | 2 | 4 | 6 | 9 | 8 | 1 | 5 | 7 | 
Line 8: | 5 | 6 | 8 | 1 | 2 | 7 | 9 | 4 | 3 | 
Line 9: | 9 | 7 | 1 | 3 | 5 | 4 | 6 | 2 | 8 |  


Today "Metro", NY pg.28 (level: hard Sudoku) -- 1 second: smile 

Код

Sudoku Line

6XX3XXXXX
4XX9XXX78
2XXX54XX3
1X6XXX4XX
X34XXX19X
XX9XXX3X6
8XX46XXX5
34XXX2XX1
XXXXX7XX4

Line 1: | 6 | 5 | 7 | 3 | 8 | 1 | 2 | 4 | 9 | 
Line 2: | 4 | 1 | 3 | 9 | 2 | 6 | 5 | 7 | 8 | 
Line 3: | 2 | 9 | 8 | 7 | 5 | 4 | 6 | 1 | 3 | 
Line 4: | 1 | 8 | 6 | 2 | 3 | 9 | 4 | 5 | 7 | 
Line 5: | 5 | 3 | 4 | 6 | 7 | 8 | 1 | 9 | 2 | 
Line 6: | 7 | 2 | 9 | 1 | 4 | 5 | 3 | 8 | 6 | 
Line 7: | 8 | 7 | 1 | 4 | 6 | 3 | 9 | 2 | 5 | 
Line 8: | 3 | 4 | 5 | 8 | 9 | 2 | 7 | 6 | 1 | 
Line 9: | 9 | 6 | 2 | 5 | 1 | 7 | 8 | 3 | 4 
|  


Lenny smile 
PM MAIL   Вверх
Samotnik
Дата 23.4.2010, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: нет
Всего: 191



Цитата(LKhiger @  7.9.2009,  07:48 Найти цитируемый пост)
прекрасные годы, когда я работал программистом в Минске

 smile  smile 
PM MAIL   Вверх
LKhiger
  Дата 24.4.2010, 04:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 7.9.2009

Репутация: 2
Всего: 2



Цитата(Samotnik @ 23.4.2010,  23:45)
Цитата(LKhiger @  7.9.2009,  07:48 Найти цитируемый пост)
прекрасные годы, когда я работал программистом в Минске

 smile  smile

Ну и ?! 
В чём юмор ? Я и сейчас работаю программистом. Чего и вам желаю.

Lenny
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Другие СУБД | Следующая тема »


 




[ Время генерации скрипта: 0.1438 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.