![]() |
|
Модераторы: Akella |
![]()
|
|
| LKhiger |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 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 | Шлите отзывы. С уважением, Леонид Хигер. Это сообщение отредактировал(а) LKhiger - 11.10.2009, 20:20 Присоединённый файл ( Кол-во скачиваний: 28 )
Absolute_SUDOKU_Solver_v5_Weight_1_.txt 29,45 Kb |
|||
|
||||
| LKhiger |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 7.9.2009 Репутация: 2 Всего: 2 |
Это очень (на мой взгляд) хорошая реклама для DB2.
Но не забывайте ссылаться на автора (Леонид Хигер) при использовании. С уважением lkhiger. |
|||
|
||||
| Viroman |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 28.7.2008 Репутация: нет Всего: нет |
Люблю судоку играть, но только на перегонки и на бумаге, а так не интересно, нравится, что чаще выигрываю, точнее против тех, кого играл, всегда, на ум не претендую. А как дела обстоят с судоку, где множество решений? Да и на db2 спрограммить эдакое, это же как в анекдоте одном про зубврача.
Приходит пациент к зубному врачу зуб вырывать, ложится он на кушетку и тут врач берёт щипцы и лезет пациенту в задницу. Пациент от такого в шоке: "вы что совсем обалдели, вы что мне в жопу лезете." А врач отвечает: "А у нас милок, всё через жопу делается". Собственно, можно зуб вырвать и через задницу, думаю, зубной врач отважившийся на такой шаг, будет смело записан в поэты зубного врачевательства А в остальном, молодец. |
|||
|
||||
| LKhiger |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 7.9.2009 Репутация: 2 Всего: 2 |
Кроме реализма, в искусстве, существует и абстракционизм.
Похоже, кое-кому, гланды удалили через зад. Хотел, чтобы вы поняли, что красками можно рисовать картины, а не только красить стены (за умеренное бабло). А в основном - вы молодец. Первым отреагировали. Шустряк, не иначе ! Lenny. |
|||
|
||||
| LKhiger |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 7.9.2009 Репутация: 2 Всего: 2 |
Кстати, если вы такой любитель соревнований в Судоку, можете посоревноваться с моей машиной для решения. О результатах сообщите. Приму любую критику с удовольствием. Лёня Х. |
|||
|
||||
| LKhiger |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 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. 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 |
|||
|
||||
| LKhiger |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
| Zloxa |
|
|||
|
Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: нет Всего: 161 |
Обажаю поэзию на sql. Очень нравятся декларативные решения. Однако когда смотришь на без малого полторы тыщи строк кода, желание проникнуться отпадает. Давно думал порешать судоку Ораклом. Если смогу - помереимся перформансами ;) -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка |
|||
|
||||
| LKhiger |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 7.9.2009 Репутация: 2 Всего: 2 |
Если короче, то получится стихотворение, а так получилась поэма, или роман в стихах.
Есть у меня и короткое решение, но это, как ни странно самое быстрое. Спасибо за ответ. Сразимся ! Lenny |
|||
|
||||
| LKhiger |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 7.9.2009 Репутация: 2 Всего: 2 |
Версия решателя Судоку, который решает все типы любой сложности,
включая Судоку с неоднозначными решениями. Lenny Khiger, ADSPA&VP. Это сообщение отредактировал(а) LKhiger - 7.10.2009, 14:30 Присоединённый файл ( Кол-во скачиваний: 4 )
Absolute_SUDOKU_Solver_v5_Weight_1_.txt 29,45 Kb |
|||
|
||||
| LKhiger |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 7.9.2009 Репутация: 2 Всего: 2 |
Today "AM", NY pg.30 Level-4 Sudoku:
Today "Metro", NY pg.28 (level: hard Sudoku) -- 1 second:
Lenny |
||||
|
|||||
| Samotnik |
|
|||
![]() Super star ! ![]() ![]() ![]() ![]() Профиль Группа: Awaiting Authorisation Сообщений: 7192 Регистрация: 4.11.2006 Где: Минск City Репутация: нет Всего: 191 |
||||
|
||||
| LKhiger |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 7.9.2009 Репутация: 2 Всего: 2 |
||||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Другие СУБД | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |