Курсовая работа: Игра в "Морской бой" с компьютером
где – выборки, содержащие либо первую клетку, либо вторую клетку, – выборки, содержащие одновременно две клетки. Следовательно
и после преобразований получим
. (2)
Заметим, что аналогичным образом можно определить вероятность попадания за k выстрелов в корабль из m клеток. Задача попадания за k выстрелов в многоклеточный корабль хотя бы один раз является задачей поиска корабля. Очевидно, что если учесть геометрию корабля, то можно предложить систему его поиска, при которой вероятность обнаружения становится выше. Действительно, при поиске двухклеточного корабля можно рассмотреть подмножество всех стратегий, содержащих обстрел, например, клеток только с четными или с нечетными номерами. Поиск двухклеточного корабля сведется к поиску одноклеточного корабля на этом подмножестве. Полагая n четным, для оптимальной вероятности попадания за k выстрелов получим
. (3)
Найденное значение вероятности больше вероятности, полученной выше
,
при всех значениях .
Оптимальная стратегия поиска трехклеточного и четырехклеточного корабля может быть получена аналогичным образом.
Вероятность попадания в игре «Морской бой»
Всего клеток 100
а) вероятность попасть в какой-нибудь корабль равна ;
б) вероятность попасть в четырехпалубный равна ;
в) вероятность попасть в однопалубный равна ;
Всего кораблей 10, не однопалубных 6, «клеточек» 16.
а) вероятность попасть в четырехпалубный равна ;
б) вероятность попасть в трехпалубный равна ;
в) вероятность попасть в двухпалубный равна .
3. Функциональная модель решения задачи
Функциональная модель решения задачи представлены на рисунке 2.
Рисунок 2 – Функциональная модель решения задачи для функции BLOW
4. Программная реализация решения задачи
; открываем файл для чтения
(setq input_stream (open «d:\\field.txt» :direction:input))
; считываем поле противника
(setq field (read input_stream))
; закрываем файл