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

2 страниц V < 1 2  
 Ответить  Открыть новую тему 
> Сапер: теория и практика
сообщение
Сообщение #21


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

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


Думаю самый простой и достаточно эффективный алгоритм заполнения поля:
- расставить подряд нужное количество мин,
- пробежаться по всем минам и произвести обмен со случайной клеткой поля.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #22


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(andriano @ 24.12.2010 22:43) *
Думаю самый простой и достаточно эффективный алгоритм заполнения поля:
- расставить подряд нужное количество мин,
- пробежаться по всем минам и произвести обмен со случайной клеткой поля.

1. Первое действие абсолютно излишне; ничто не мешает ставить мины на места прямо "со склада".
2. Второе действие совершенно прекрасно приводит к исходному вопросу Стаяна в случае, когда "случайная клетка поля" уже занята.

andriano, предлагая "лучший" алгоритм, пожалуйста, указывай, чем тебе не нравятся уже приведенные алгоритмы.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #23


Гость






Цитата(Lapp @ 25.12.2010 4:19) *

1. Первое действие абсолютно излишне; ничто не мешает ставить мины на места прямо "со склада".


Насчёт излишнести 1 действия я не понял. Приведи код.
Мне кажется, у тебя будут проблемы в случае, когда надо поменять местами 1 и 2 клетки, и на 2й со склада ещё ничего не стоит.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #24


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

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


Цитата(Lapp @ 25.12.2010 4:19) *

1. Первое действие абсолютно излишне; ничто не мешает ставить мины на места прямо "со склада".
Отнюдь.
Разница проявляется в том случае, когда выбранная клетка уже занята. При этом мы не ставим вторую мину в уже занятую клатку, а меняем местами две мины.
Цитата

2. Второе действие совершенно прекрасно приводит к исходному вопросу Стаяна в случае, когда "случайная клетка поля" уже занята.
Второе без первого - да, приводит.
Именно поэтому я и предложил двухэтапную схему, т.к. каждый из этапов поотдельности не приводит к требуемому результату.
Цитата

andriano, предлагая "лучший" алгоритм, пожалуйста, указывай, чем тебе не нравятся уже приведенные алгоритмы.
Я ни в коей мере не утверждал, что лично мне они не нравятся. Просто они подвергались критике со стороны ДРУГИХ участников обсуждения.

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

PS. Кстати, пересмотрел тему с начала и заметил, что данный прием мною уже предлагался. Поэтому тому, кто задает вопрос посередине обсуждения, все-таки следовало бы прежде прочитать тему с начала.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #25


Уникум
*******

Группа: Пользователи
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

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


Цитата(-TarasBer- @ 25.12.2010 14:46) *
Насчёт излишнести 1 действия я не понял. Приведи код.
Вот это круто. Просить меня привести код, в то время как алгоритм приведен на уровне "поди туда, не знаю куда". norespect.gif

Цитата
Мне кажется, у тебя будут проблемы в случае, когда надо поменять местами 1 и 2 клетки, и на 2й со склада ещё ничего не стоит.
У меня не было, нет и не будет никаких проблем (по крайней мере, по таким поводам).

Цитата(andriano @ 25.12.2010 16:01) *
Отнюдь.
Разница проявляется в том случае, когда выбранная клетка уже занята. При этом мы не ставим вторую мину в уже занятую клатку, а меняем местами две мины.
Либо я персидский шах, либо - турецкий султан.. Интересно, у тебя уже и мины все разные? У каждой свой номер? или имя? и взрываются по-разному? А если нет - зачем их менять местами?.. blink.gif

Цитата
Второе без первого - да, приводит.
Второе без первого просто не будет работать совсем, если я правильно понимаю алгоритм. Я не предлагал использовать второе без первого.

Цитата
Именно поэтому я и предложил двухэтапную схему, т.к. каждый из этапов поотдельности не приводит к требуемому результату.Я ни в коей мере не утверждал, что лично мне они не нравятся. Просто они подвергались критике со стороны ДРУГИХ участников обсуждения.
Так соотнеси свои слова с этой критикой.

Цитата
В свою очередь могу посоветовать попытаться разобраться в алгоритме прежде, чем чем утверждать, что часть его лишняя, а оставшаяся часть ничем не лучше того, что уже предложено ранее.
...

Цитата
PS. Кстати, пересмотрел тему с начала и заметил, что данный прием мною уже предлагался. Поэтому тому, кто задает вопрос посередине обсуждения, все-таки следовало бы прежде прочитать тему с начала.
Вот, наконец-то, соизволили-с.. Уважаемый andriano, у нас с тобой один раз уже был разговор где ты прекрасно проявил свою профессорскую рассеянность. Рекомендую тебе на будущее ЧИТАТЬ ТЕМЫ, В КОТОРЫЕ ОТВЕЧАЕШЬ. И имей в виду, пожалуйста, что я еще пока ожидаю твоих извинений за тот прецедент.


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #26


Гость






Цитата(Lapp @ 26.12.2010 5:59) *

Вот это круто. Просить меня привести код, в то время как алгоритм приведен на уровне "поди туда, не знаю куда".



Алгоритм приведён достаточно точно, чтобы его применить.
Заполняем первые n полей минами, потом for i := 0 to n - 1 do swap(i, i + random(size-i));

> Интересно, у тебя уже и мины все разные? У каждой свой номер?

Одинаковые. Но одна из меняемых клеток может не содержать мину. А может и содержать. А как твой вариант будет это обрабатывать, есть вторая клетка заведомо без мины, и мы её переместим хз куда? Будешь запоминать все перестановки?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #27


Гость






Забыл имя вписать.
Оказывается, отсутствие имени не вызывает ошибку отправки поста.
 К началу страницы 
+ Ответить 

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

 





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