Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / быстрая рандомная расстановка в морском бое / 16 сообщений из 16, страница 1 из 1
31.05.2011, 20:27
    #37288164
beatles4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстрая рандомная расстановка в морском бое
Посоветуйте, как быстро и рандомно расставить корабли в морском бое.
поле 10x10
...
Рейтинг: 0 / 0
31.05.2011, 20:58
    #37288200
Гата Селов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстрая рандомная расстановка в морском бое
оффтоп: поле 10x10 это даже худшее решение, чем 100x1
...
Рейтинг: 0 / 0
31.05.2011, 21:08
    #37288217
beatles4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстрая рандомная расстановка в морском бое
просто мне нужно, чтобы корабли друг к другу не прислонялись и не вылазили за поле.
т.к. мне нужно сделать не просто, чтобы ходили правильно, но и набиралась статистика для метода Монте-Карло. для этого мне нужно, чтобы при каждой игре ресурсы на расстановку были минимальными.
...
Рейтинг: 0 / 0
31.05.2011, 21:53
    #37288288
Abstraction
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстрая рандомная расстановка в морском бое
beatles4,

ИМХО, размещать корабли от длинных к коротким и для каждого корабля независимо загадывать ориентацию, потом составлять список возможных координат верхнего левого угла (прямоугольника 3*(2+х)) и случайным образом выбирать одну - не самая худшая стратегия.
...
Рейтинг: 0 / 0
31.05.2011, 22:05
    #37288310
Abstraction
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстрая рандомная расстановка в морском бое
P.S. Для ускорения, можно заранее составить список всех 140 положений корабля 4*1; затем список всех возможных (106-140) положений первого 3*1 корабля и т.д. - провести часть вычислений заранее, в общем.

Но вообще, интересно, что именно понимается под методом Монте-Карло... Если перебор всех уникальных позиций с равной вероятностью, то, по-хорошему, придётся создавать полноценный список расстановок.
...
Рейтинг: 0 / 0
31.05.2011, 22:33
    #37288344
beatles4
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстрая рандомная расстановка в морском бое
идея такая (например на n-ом ходе) у соперника затоплен 4-ёх палубник и 1 трёхпалубник (например).
тогда алгоритм (пусть всего, скажем, 40 свободных клеток):

1)расставляй оставшиеся у соперника корабли (вот тут-то и проблема, нужно чтобы он их быстро расставлял)
2)клетку №1
3)играй игру до конца
4)если победил - плюс один к победам, если проиграл - плюс одно к поражениям
повторяем 1)-4) очень много раз (N раз)

1)расставляй оставшиеся у соперника корабли (вот тут-то и проблема, нужно чтобы он их быстро расставлял)
2)клетку свободную №2
3)играй игру до конца
4)если победил - плюс один к победам, если проиграл - плюс одно к поражениям
повторяем 2)-4) очень много раз (N раз)

1)расставляй оставшиеся у соперника корабли (вот тут-то и проблема, нужно чтобы он их быстро расставлял)
2)клетку свободную №40
3)играй игру до конца
4)если победил - плюс один к победам, если проиграл - плюс одно к поражениям
повторяем 2)-4) очень много раз (N раз)





тогда у нас появится список из возможных ходов для (n+1)-ого хода:
(напрмер)
1)a1 - 50% побед, 50% поражений
2)a4 - 48% побед, 52% поражений
.
.
40)k8 - 56% побед, 44% поражений

и тогда сделаем ход, выбрав его из последнего списка (в котором больше всего % побед).
но у меня нету идеи алгоритма, как быстро расставить корабли
...
Рейтинг: 0 / 0
31.05.2011, 23:08
    #37288377
Abstraction
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстрая рандомная расстановка в морском бое
beatles4,

Воля ваша, но что-то в этом странное. В частности, для таких расчётов надо делать предположение о том, какой логикой будет руководствоваться оппонент - что при расстановке кораблей, что при стрельбе. Понятно, что в том случае, если "наша" сторона ведёт себя с учётом того, что противник будет стрелять с равной вероятностью по всем квадратам, а "противник" именно так себя и будет вести, то наши шансы на выигрыш будут выше 50% - но много ли толку от такого исследования?

Базовый совет, в таком случае - в начале составить массив возможных в этой ситуации позиций позиций (не обязательно даже всех, достаточно большой выборки), после чего начинать каждую итерацию, просто выбирая позицию из списка.
...
Рейтинг: 0 / 0
01.06.2011, 00:50
    #37288455
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстрая рандомная расстановка в морском бое
beatles4для этого мне нужно, чтобы при каждой игре ресурсы на расстановку были минимальными.
Интересно узнать текущую реализацию. Чтоб не оптимизировать ненужное...
...
Рейтинг: 0 / 0
01.06.2011, 08:54
    #37288579
refreg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстрая рандомная расстановка в морском бое
beatles4,

Заранее сделай базу из всех возможных расстановок - тупой перебор, пусть медленно...
В процессе игры выборка из базы
...
Рейтинг: 0 / 0
06.06.2011, 18:22
    #37297445
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстрая рандомная расстановка в морском бое
Расставлять надо не корабли, а "корабли с тенью". Т.е. корабль 4*1 превращается в "корабль с тенью" 6*3. Аналогично и поле превращается в "поле с тенью" 12*12. В результате задача о размещении кораблей без наложений и касаний модифицируется в задачу размещения "кораблей с тенью" без наложения. По завершении размещения тени удаляются.
...
Рейтинг: 0 / 0
06.06.2011, 18:24
    #37297449
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстрая рандомная расстановка в морском бое
Для ускорения корабли расставляются в порядке уменьшения размеров. При заданном размере поля и набора кораблей всегда можно найти минимум одно место для очередного корабля...
...
Рейтинг: 0 / 0
07.06.2011, 01:19
    #37297901
Abstraction
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстрая рандомная расстановка в морском бое
Akina,

Да, только при этом различные расстановки имеют различную вероятность появления.
авторВ результате задача о размещении кораблей без наложений и касаний модифицируется в задачу размещения "кораблей с тенью" без наложения.
Чуть точнее. Задача о размещении очередного корабля модифицируется в задачу размещения "корабля с тенью". Что уже было предложено выше.
...
Рейтинг: 0 / 0
07.06.2011, 09:10
    #37298044
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстрая рандомная расстановка в морском бое
Abstractionпри этом различные расстановки имеют различную вероятность появления.При любом способе расстановки, за исключением полного перебора расстановок (возможно, предварительного) с последующим выбором одной из всех возможных, появление расстановок не будет равновероятным.

AbstractionЗадача о размещении очередного корабля модифицируется в задачу размещения "корабля с тенью". Что уже было предложено выше.А какой смысл на каждом шаге делать эти преобразования? удлинение алгоритма, и никакого профиту...
...
Рейтинг: 0 / 0
07.06.2011, 12:19
    #37298448
Abstraction
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстрая рандомная расстановка в морском бое
AkinaА какой смысл на каждом шаге делать эти преобразования? удлинение алгоритма, и никакого профиту...
То есть? Поставив корабль, "тень" с него надо снять, а следующий (с "тенью") ставить так, чтобы он не касался уже поставленных кораблей , не "теней", я об этом.
...
Рейтинг: 0 / 0
07.06.2011, 12:29
    #37298482
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстрая рандомная расстановка в морском бое
а, пардон, просто не так понял...
...
Рейтинг: 0 / 0
07.06.2011, 15:12
    #37298928
refreg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстрая рандомная расстановка в морском бое
Такие соображения:
1. Берем самый многопалубный корабль.
2. Перебираем все варианты расстановки для него одного (немного вариантов)
3. Для каждого варианта проверяем, можно ли расставить оставшиеся корабли (это достаточно быстро - надо найти хотя бы 1 вариант расстановки) - выбрасываем варианты, когда корабли расставить нельзя.
4. Из оставшихся вариантов считаем сумму занятых этим кораблем клеток для каждого поля.
5. Стреляем по максимальной сумме.

Пример (для понимания 4-го пункта). Начало игры - поле чистое. 4-х палубник может стоять где угодно. Всего 140 вариантов.
В поле А1 - два варианта - вес 2.
В поле А2 - три варианта - вес 3.
В поле Д5,Д6 - наверное 8 вариантов - вес 8.
Стреляем по случайной клетке, с весом 8 (например, Д5)
после выстрела по Д5, если мимо, у клетки Д6 будет уже только 5 вариантов...
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / быстрая рандомная расстановка в морском бое / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]