Думаю самый простой и достаточно эффективный алгоритм заполнения поля:
- расставить подряд нужное количество мин,
- пробежаться по всем минам и произвести обмен со случайной клеткой поля.
Сапер: теория и практика |
Сапер: теория и практика |
andriano |
Сообщение
#21
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
Думаю самый простой и достаточно эффективный алгоритм заполнения поля:
- расставить подряд нужное количество мин, - пробежаться по всем минам и произвести обмен со случайной клеткой поля. |
Lapp |
Сообщение
#22
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Думаю самый простой и достаточно эффективный алгоритм заполнения поля: - расставить подряд нужное количество мин, - пробежаться по всем минам и произвести обмен со случайной клеткой поля. 1. Первое действие абсолютно излишне; ничто не мешает ставить мины на места прямо "со склада". 2. Второе действие совершенно прекрасно приводит к исходному вопросу Стаяна в случае, когда "случайная клетка поля" уже занята. andriano, предлагая "лучший" алгоритм, пожалуйста, указывай, чем тебе не нравятся уже приведенные алгоритмы. -------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
-TarasBer- |
Сообщение
#23
|
Гость |
1. Первое действие абсолютно излишне; ничто не мешает ставить мины на места прямо "со склада". Насчёт излишнести 1 действия я не понял. Приведи код. Мне кажется, у тебя будут проблемы в случае, когда надо поменять местами 1 и 2 клетки, и на 2й со склада ещё ничего не стоит. |
andriano |
Сообщение
#24
|
Гуру Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: 28 |
1. Первое действие абсолютно излишне; ничто не мешает ставить мины на места прямо "со склада". Разница проявляется в том случае, когда выбранная клетка уже занята. При этом мы не ставим вторую мину в уже занятую клатку, а меняем местами две мины. Цитата 2. Второе действие совершенно прекрасно приводит к исходному вопросу Стаяна в случае, когда "случайная клетка поля" уже занята. Именно поэтому я и предложил двухэтапную схему, т.к. каждый из этапов поотдельности не приводит к требуемому результату. Цитата andriano, предлагая "лучший" алгоритм, пожалуйста, указывай, чем тебе не нравятся уже приведенные алгоритмы. В свою очередь могу посоветовать попытаться разобраться в алгоритме прежде, чем чем утверждать, что часть его лишняя, а оставшаяся часть ничем не лучше того, что уже предложено ранее. PS. Кстати, пересмотрел тему с начала и заметил, что данный прием мною уже предлагался. Поэтому тому, кто задает вопрос посередине обсуждения, все-таки следовало бы прежде прочитать тему с начала. |
Lapp |
Сообщение
#25
|
Уникум Группа: Пользователи Сообщений: 6 823 Пол: Мужской Реальное имя: Лопáрь (Андрей) Репутация: 159 |
Насчёт излишнести 1 действия я не понял. Приведи код. Вот это круто. Просить меня привести код, в то время как алгоритм приведен на уровне "поди туда, не знаю куда". Цитата Мне кажется, у тебя будут проблемы в случае, когда надо поменять местами 1 и 2 клетки, и на 2й со склада ещё ничего не стоит. У меня не было, нет и не будет никаких проблем (по крайней мере, по таким поводам).Отнюдь. Либо я персидский шах, либо - турецкий султан.. Интересно, у тебя уже и мины все разные? У каждой свой номер? или имя? и взрываются по-разному? А если нет - зачем их менять местами?.. Разница проявляется в том случае, когда выбранная клетка уже занята. При этом мы не ставим вторую мину в уже занятую клатку, а меняем местами две мины. Цитата Второе без первого - да, приводит. Второе без первого просто не будет работать совсем, если я правильно понимаю алгоритм. Я не предлагал использовать второе без первого.Цитата Именно поэтому я и предложил двухэтапную схему, т.к. каждый из этапов поотдельности не приводит к требуемому результату.Я ни в коей мере не утверждал, что лично мне они не нравятся. Просто они подвергались критике со стороны ДРУГИХ участников обсуждения. Так соотнеси свои слова с этой критикой.Цитата В свою очередь могу посоветовать попытаться разобраться в алгоритме прежде, чем чем утверждать, что часть его лишняя, а оставшаяся часть ничем не лучше того, что уже предложено ранее. ...Цитата PS. Кстати, пересмотрел тему с начала и заметил, что данный прием мною уже предлагался. Поэтому тому, кто задает вопрос посередине обсуждения, все-таки следовало бы прежде прочитать тему с начала. Вот, наконец-то, соизволили-с.. Уважаемый andriano, у нас с тобой один раз уже был разговор где ты прекрасно проявил свою профессорскую рассеянность. Рекомендую тебе на будущее ЧИТАТЬ ТЕМЫ, В КОТОРЫЕ ОТВЕЧАЕШЬ. И имей в виду, пожалуйста, что я еще пока ожидаю твоих извинений за тот прецедент.-------------------- я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой |
Гость |
Сообщение
#26
|
Гость |
Вот это круто. Просить меня привести код, в то время как алгоритм приведен на уровне "поди туда, не знаю куда". Алгоритм приведён достаточно точно, чтобы его применить. Заполняем первые n полей минами, потом for i := 0 to n - 1 do swap(i, i + random(size-i)); > Интересно, у тебя уже и мины все разные? У каждой свой номер? Одинаковые. Но одна из меняемых клеток может не содержать мину. А может и содержать. А как твой вариант будет это обрабатывать, есть вторая клетка заведомо без мины, и мы её переместим хз куда? Будешь запоминать все перестановки? |
-TarasBer- |
Сообщение
#27
|
Гость |
Забыл имя вписать.
Оказывается, отсутствие имени не вызывает ошибку отправки поста. |
Текстовая версия | 11.01.2025 16:17 |