С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Для начала - хотя бы вообще, а потом будет видно, можно ли реализовать алгоритм на Спектруме, сохранив его эффективность (хотя бы частично).
У меня в этом деле такой подход, чтобы двигаться к решению постепенно и не пытаться заткнуть сразу все дыры.
Ну смотри, допустим для начала простой случай - клетка с максимальной вероятностью одна после каждого выстрела. Ее координаты можно закодировать 7ю битами. После каждого хода идет ветвление на 2 направления: попал или не попал. Количество клеток для запоминания после каждого хода будет увеличиваться в 2 раза, так что мы имеем дело с суммой геометрической прогрессии. Для запоминания всех ветвлений из 8 ходов достаточно 511 координат, что равняется 448 байтам (у нас 7 бит на одну пару координат). Вполне приемлемо даже для Спектрума. Если клеток с макс. вероятностью больше одной после каждого хода - то таблица возрастет в несколько раз, но мне бы даже 32кБ было не жалко для такой таблицы, а то и под завязку забить всю память до 128К.
Таблицу можно также оптимизировать, как это делается и в шахматах, сохраняя более интересные ветки с большей глубиной, чем менее интересные. Скажем, промахнуться при первых выстрелах больше вероятность, чем попасть, поэтому ветки, начинающиеся с промахов, можно сохранять с большей глубиной. А когда будет подбито несколько вражеских кораблей - то может стать возможным рассчитывать оптимальную стрельбу в реальном времени, так что эти ветки тоже сохранять не надо.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)