![]() |
|
|
![]()
|
|
||
|
|
| dvork1ng |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 17.6.2010 Репутация: нет Всего: нет |
Суть вопроса состоит в следующем: в результате спора 2х программистов было решено устроить соревнование: разработать алгоритм, заполняющий квадрат 9х9 по правилам судоку, каждый сделал свой алгоритм, но победитель так и остался неясен. Помогите определить чей алгоритм признать лучшим
Первый алгоритм состоит в том, что: Генерируется строка из 9 чисел, без повторов, после чего во второй, третьей, ..., девятой строке пишется она же, только со сдвигом на 3, 6 клеток, в результате получается квадрат типа http://s1.ipicture.ru/uploads/20110423/6RPfrgdQ.png время выполнения - порядка 0,000004 секунды Плюсы - время выполнения Минусы - решение "в лоб", малое покрытие возможных вариантов, зная первую строку можно полностью записать весь квадрат Второй алгоритм состоит в том, что: 1) Генерируется строка из 9 чисел без повторений и записывается в первую линию 2) из этой строки заполняются первые три квадрата по правилу: в первый квадрат пишется вторая и третья тройка чисел, во второй - первая и третья, в третий - вторая и первая Пример: если строка 324 587 169, то квадраты заполняются так 324 587 169 587 169 324 169 324 587 3) в тройках второй и третьей строки числа переставляются случайным образом, но так, чтобы удовлетворять условиям, получается нечто вроде 324 587 169 758 916 342 691 432 578 4) после этого снова генерируется строка для четвертой линии исходного квадрата так, чтобы удовлетворяла условиям уже заполненных ячеек 5) снова заполняются и перемешиваются квадраты и генерируется строка для 6й строки исходного квадрата и т.д. 6) если на каком-то из этапов произошла коллизия - вариант отбрасывается и все начинается сначала в результате получается квадрат типа http://s1.ipicture.ru/uploads/20110423/21uh34Sv.png Время выполнения - порядка 0,0003~0,00004 Плюсы - большое покрытие возможных вариантов, отсутствие видимых закономерностей Минусы - большее время выполнения З.Ы. - если написал не в тот раздел - просьба не пинать сильно ) более подходящего не увидел ) |
|||
|
||||
| DarkProg |
|
|||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: нет Всего: 19 |
А вы по какому критерию хотели соревноваться - кто больше вариантов сможет предложить(в смысле для заполнения квадрата) или у кого быстрее алгоритм???
-------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." |
|||
|
||||
| dvork1ng |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 17.6.2010 Репутация: нет Всего: нет |
К сожалению - конкретно мы не оговаривали правила, поэтому и возникла проблема
Вопрос был - чей алгоритм будет лучше выполнять задачу, комплексно. В качестве критерия можно использовать такой - какой алгоритм Вы лично использовали бы в коммерческом продукте Это сообщение отредактировал(а) dvork1ng - 23.4.2011, 15:00 |
|||
|
||||
| DarkProg |
|
|||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: нет Всего: 19 |
Ok, тогда я выберу более быстрый вариант - для меня это один из основополагающих критериев. -------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." |
|||
|
||||
| Akina |
|
||||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Если задача сформулирована ИМЕННО ТАК, без определения критериев
то невозможно решить, какой алгоритм лучше. Поскольку речь идёт о поиске ОДНОГО заполнения - временем работы можно пренебречь. Однако исходя из предметной области - оба алгоритма плохи. Второй - менее плох, т.к. обеспечивает более-менее случайное заполнение. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
||||
|
|||||
| dvork1ng |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 17.6.2010 Репутация: нет Всего: нет |
Я согласен с тем, что оба варианта не дают полностью удовлетворительного результата, но они и разрабатывались "на коленке", в течении нескольких часов, с учетом кодинга. Вопрос не в том, хороши ли они, а какой из двух считать победителем
И речь не шла о поиске ОДНОГО заполнения, речь шла об алгоритме, который будет заполнять квадрат по правилам судоку, собственно каждый из алгоритмов заполняет его сколько угодно раз, за исключением того, что первый может покрыть (теоретически) 9! * 6^2 * 3^2 вариантов, а второй - 9!*6!*3!^10 вариантов. (В математике мог ошибиться, если так - поправьте, но общий смысл все равно остается таким) Это сообщение отредактировал(а) dvork1ng - 24.4.2011, 07:14 |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 20 Всего: 454 |
Неправда. Во-первых, перечитайте формулировку более внимательно. "ЗАПОЛНЯЮЩЕГО". Заполнил - всё, конец. Во-вторых, будь так, как ты говоришь - почему меряется время генерации ОДНОГО заполнения? -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 2 Всего: 85 |
Вопрос из категории что лучше: бутылка пива или рюмка водки?
Выбираю 2. так как 1, вообще халтура. там повторы одни. |
|||
|
||||
| dvork1ng |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 17.6.2010 Репутация: нет Всего: нет |
Все верно, прошу прощения ) С утра неправильно прочитал ) |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |