komand, моя заслуга при расчёте позиций минимальна, я всего лишь взял готовую программу, выложенную по ссылке, указанной
grizzly в сообщении
https://dxdy.ru/post1512752.html#p1512752.
Программу нужно было скомпилить и адаптировать к наличию 1п. Спасибо.
1.
Цитата:
Ход — ваши действия до передачи хода противнику
Рекурсия не нужна.
Моя ошибка, исправлю.
Цитата:
2. Не очень понятно, как устроен "случайный обстрел".
После попадания ("ранил") следующий выстрел как делается? Тоже случайно или по какой-то методе добиваем? Что такое "свободная клетка" (этого нет в терминах)?
1. Случайный обстрел может быть трех видов: совсем случайный, некоторой матрице (массиву) и некий алгоритм.
1.1. Совсем случайный обстрел - генерируем любую координату и смотрим, стреляли ли туда. Если нет, стреляем. И так до исчерпания всех координат или до победы. На самом деле чуть хитрее: уже стрелянная координата удаляется из пула возможных. И след. выстрел идет уже по сократившемся пуле. Проще показать на примере. Допустим, у нас есть поле
, в нем 4 координаты: 00,01,10,11. Эти числа записаны в отдельный массив. У него длина 4. Генерим случайно число от 0 до "длина массива", т.е. "4". Допустим, это 11. Стреляем туда. Координату из массива убираем. Теперь в нем три координаты: 00,01,10. Генерим случайное число от о 0 до 3. Ну и так далее, пока массив не исчерпается. Конечно учитывается "мертвая зона" вокруг кораблей, и сами корабли, эти координаты тоже вычеркиваются из маccива.
1.2. Обстрел по системе. Допустим, для поля
у нас система "сетка-4", т.е. наилучшая для поимки 4п. Координаты в массиве такие:
[03, 07, 12, 16, 21, 25, 29, 30, 34, 38, 43, 47, 52, 56, 61, 65, 69, 70, 74, 78, 83, 87, 92, 96]. Далее, как в 1.1: генерим случайное число и выбираем координату из этого массива. Если он закончился, может быть след. массив. Если все приоритеты кончились, переходим к 1.1., т.е. заканчиваем случайно.
1.3. Обстрел по алгоритму. Программа исследует каждый войд и строим матрицу плотностей. Далее стреляет по координате, в которой наиболее вероятен корабль. И так каждый раз. Однако, если две или более вероятности равны, из них выбирается одна случайно.
"Свободная клетка" - клетка, в которую еще не стреляли и в которая не занята уже потопленным кораблем или его аурой. Исправлю в описании.
Цитата:
3. И ещё такой тонкий момент. Вы же минимизируете мат ожидание количества ходов?
Тогда это не гарантирует максимизации вероятности выигрыша партии.
Например, может случиться так, что мат. ожидания количества ходов до выигрыша у разных игроков одинаковые, но один игрок выигрывает чаще.
Не очень понятно, как у разных игроков может быть разное мат. ожидание, если игра одна? Более того, наличие противника в модели не нужно. Достаточно минимизировать кол-во ходов до победы и вы будете выигрывать чаще.