|
|
|
быстрая рандомная расстановка в морском бое
|
|||
|---|---|---|---|
|
#18+
Посоветуйте, как быстро и рандомно расставить корабли в морском бое. поле 10x10 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2011, 20:27 |
|
||
|
быстрая рандомная расстановка в морском бое
|
|||
|---|---|---|---|
|
#18+
оффтоп: поле 10x10 это даже худшее решение, чем 100x1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2011, 20:58 |
|
||
|
быстрая рандомная расстановка в морском бое
|
|||
|---|---|---|---|
|
#18+
просто мне нужно, чтобы корабли друг к другу не прислонялись и не вылазили за поле. т.к. мне нужно сделать не просто, чтобы ходили правильно, но и набиралась статистика для метода Монте-Карло. для этого мне нужно, чтобы при каждой игре ресурсы на расстановку были минимальными. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2011, 21:08 |
|
||
|
быстрая рандомная расстановка в морском бое
|
|||
|---|---|---|---|
|
#18+
beatles4, ИМХО, размещать корабли от длинных к коротким и для каждого корабля независимо загадывать ориентацию, потом составлять список возможных координат верхнего левого угла (прямоугольника 3*(2+х)) и случайным образом выбирать одну - не самая худшая стратегия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2011, 21:53 |
|
||
|
быстрая рандомная расстановка в морском бое
|
|||
|---|---|---|---|
|
#18+
P.S. Для ускорения, можно заранее составить список всех 140 положений корабля 4*1; затем список всех возможных (106-140) положений первого 3*1 корабля и т.д. - провести часть вычислений заранее, в общем. Но вообще, интересно, что именно понимается под методом Монте-Карло... Если перебор всех уникальных позиций с равной вероятностью, то, по-хорошему, придётся создавать полноценный список расстановок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2011, 22:05 |
|
||
|
быстрая рандомная расстановка в морском бое
|
|||
|---|---|---|---|
|
#18+
идея такая (например на 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% поражений и тогда сделаем ход, выбрав его из последнего списка (в котором больше всего % побед). но у меня нету идеи алгоритма, как быстро расставить корабли ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2011, 22:33 |
|
||
|
быстрая рандомная расстановка в морском бое
|
|||
|---|---|---|---|
|
#18+
beatles4, Воля ваша, но что-то в этом странное. В частности, для таких расчётов надо делать предположение о том, какой логикой будет руководствоваться оппонент - что при расстановке кораблей, что при стрельбе. Понятно, что в том случае, если "наша" сторона ведёт себя с учётом того, что противник будет стрелять с равной вероятностью по всем квадратам, а "противник" именно так себя и будет вести, то наши шансы на выигрыш будут выше 50% - но много ли толку от такого исследования? Базовый совет, в таком случае - в начале составить массив возможных в этой ситуации позиций позиций (не обязательно даже всех, достаточно большой выборки), после чего начинать каждую итерацию, просто выбирая позицию из списка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2011, 23:08 |
|
||
|
быстрая рандомная расстановка в морском бое
|
|||
|---|---|---|---|
|
#18+
beatles4для этого мне нужно, чтобы при каждой игре ресурсы на расстановку были минимальными. Интересно узнать текущую реализацию. Чтоб не оптимизировать ненужное... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2011, 00:50 |
|
||
|
быстрая рандомная расстановка в морском бое
|
|||
|---|---|---|---|
|
#18+
beatles4, Заранее сделай базу из всех возможных расстановок - тупой перебор, пусть медленно... В процессе игры выборка из базы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2011, 08:54 |
|
||
|
быстрая рандомная расстановка в морском бое
|
|||
|---|---|---|---|
|
#18+
Расставлять надо не корабли, а "корабли с тенью". Т.е. корабль 4*1 превращается в "корабль с тенью" 6*3. Аналогично и поле превращается в "поле с тенью" 12*12. В результате задача о размещении кораблей без наложений и касаний модифицируется в задачу размещения "кораблей с тенью" без наложения. По завершении размещения тени удаляются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2011, 18:22 |
|
||
|
быстрая рандомная расстановка в морском бое
|
|||
|---|---|---|---|
|
#18+
Для ускорения корабли расставляются в порядке уменьшения размеров. При заданном размере поля и набора кораблей всегда можно найти минимум одно место для очередного корабля... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2011, 18:24 |
|
||
|
быстрая рандомная расстановка в морском бое
|
|||
|---|---|---|---|
|
#18+
Akina, Да, только при этом различные расстановки имеют различную вероятность появления. авторВ результате задача о размещении кораблей без наложений и касаний модифицируется в задачу размещения "кораблей с тенью" без наложения. Чуть точнее. Задача о размещении очередного корабля модифицируется в задачу размещения "корабля с тенью". Что уже было предложено выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2011, 01:19 |
|
||
|
быстрая рандомная расстановка в морском бое
|
|||
|---|---|---|---|
|
#18+
Abstractionпри этом различные расстановки имеют различную вероятность появления.При любом способе расстановки, за исключением полного перебора расстановок (возможно, предварительного) с последующим выбором одной из всех возможных, появление расстановок не будет равновероятным. AbstractionЗадача о размещении очередного корабля модифицируется в задачу размещения "корабля с тенью". Что уже было предложено выше.А какой смысл на каждом шаге делать эти преобразования? удлинение алгоритма, и никакого профиту... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2011, 09:10 |
|
||
|
быстрая рандомная расстановка в морском бое
|
|||
|---|---|---|---|
|
#18+
AkinaА какой смысл на каждом шаге делать эти преобразования? удлинение алгоритма, и никакого профиту... То есть? Поставив корабль, "тень" с него надо снять, а следующий (с "тенью") ставить так, чтобы он не касался уже поставленных кораблей , не "теней", я об этом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2011, 12:19 |
|
||
|
быстрая рандомная расстановка в морском бое
|
|||
|---|---|---|---|
|
#18+
а, пардон, просто не так понял... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2011, 12:29 |
|
||
|
быстрая рандомная расстановка в морском бое
|
|||
|---|---|---|---|
|
#18+
Такие соображения: 1. Берем самый многопалубный корабль. 2. Перебираем все варианты расстановки для него одного (немного вариантов) 3. Для каждого варианта проверяем, можно ли расставить оставшиеся корабли (это достаточно быстро - надо найти хотя бы 1 вариант расстановки) - выбрасываем варианты, когда корабли расставить нельзя. 4. Из оставшихся вариантов считаем сумму занятых этим кораблем клеток для каждого поля. 5. Стреляем по максимальной сумме. Пример (для понимания 4-го пункта). Начало игры - поле чистое. 4-х палубник может стоять где угодно. Всего 140 вариантов. В поле А1 - два варианта - вес 2. В поле А2 - три варианта - вес 3. В поле Д5,Д6 - наверное 8 вариантов - вес 8. Стреляем по случайной клетке, с весом 8 (например, Д5) после выстрела по Д5, если мимо, у клетки Д6 будет уже только 5 вариантов... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2011, 15:12 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=37288310&tid=1342899]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
168ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 493ms |

| 0 / 0 |
