Спасибо. На досуге постараюсь разобраться. Насчет читабельности не беспокойтесь: мне приходилось иногда разбирать даже ксорки и другой запутанный код :)
А можно куда-нибудь выложить код хотя бы в его текущем виде? Хочется пощупать своими руками, но сочинять свою прогу — не могу собраться с силами и выделить время.
Вы во многом правы. Я для себя пиратством не занимаюсь, а потребление лицензионной продукции свел к минимуму: только самое необходимое. Бывает и так, что музыка, например, продается «за сколько не жалко» напрямую авторами — в таких случаях стараюсь заплатить щедро, если она мне понравилась и если доступна в хорошем формате без DRM, таком как flac. То же самое касается и ПО: есть же много бесплатных альтернатив, тот же Open/Libre-Office. Немного напрягись, переучись — и живи спокойно без чувства, что ты нарушил закон. Но только и такое поведение лишь подливает воду на мельницу копирастов. От таких, как я, падают их доходы, что дает им новый повод требовать ужесточения борьбы с пиратством.
Не следует забывать, что ваши проблемы не волнуют правообладателей. Пока есть защищаемые государством сверхприбыли — никто ради вашего удобства палец о палец не ударит. Ну разве что если конкуренция среди них начнется — тогда да, тогда все для удобства клиента.
Повторюсь, при правильной нормировке вероятность попадания — то есть отношение числа комбинаций размещения всех кораблей, при которых в данной клетке имеется корабль, к общему числу допустимых комбинаций, составляет порядка 20% в среднем для клеток необстрелянного поля. Сами подумайте, как вероятность попасть в корабль на пустом поле может быть порядка 1%? Так было бы, если бы на поле находился только один однопалубный корабль.
Вообще-то клеток с кораблями на пустом поле — 20 штук, поэтому вероятность должна составлять порядка 20% в среднем. У вас где-то ошибка. Посмотрите на мою карту.
Тогда вообще прекрасно. При хорошей оптимизации можно надеяться на сокращение времени расчетов до примерно 10с, что очень даже приемлемо в ходе онлайн-игры с человеком.
Очень интересно. Ваши результаты практически совпадают с моими, полученными методом Монте-Карло по перебору большого числа равномерно распределенных комбинаций кораблей (в свое время за несколько недель работы ноута было насчитано и сохранено более 3Гб комбинаций). Надо будет исследовать ваш алгоритм подробнее. Быть может, это прорыв!
Ваш алгоритм — это лишь первый шаг к определению вероятности размещения корабля или его фрагмента в данной клетке. Я проводил более глубокий анализ этого вопроса в теме на форуме о ZX Spectrum. При этом рассматривалась вероятность не только подбить самый длинный из оставшихся кораблей противника, а вероятность подбить хоть какой-нибудь корабль при любых возможных способах размещения на поле всех кораблей. Из этого алгоритма естественным образом следует обстрел краев поля в начале игры как наиболее вероятных мест нахождения кораблей противника; также для добивания корабля после того, как он был «ранен», не требуется отдельная ветка алгоритма. В принципе могут существовать даже ситуации, когда искать другой корабль на поле выгоднее, чем добивать ранее найденный (вероятность попасть выше), но они редки, так что мой алгоритм обычно будет все-таки добивать.
К сожалению, мой «всеобъемлющий» подход столкнулся со сложностями вычислительного характера, что даже на современных компьютерах просчитать все комбинации невозможно, а можно лишь искать некоторое приближение методом Монте-Карло, но и это оказалось затруднительно в реальном времени. Пока что работа над дальнейшим развитием алгоритма остановлена, но может быть я когда-нибудь вернусь к этому. А тему почитайте, там интереснее, чем во многих других исследованиях «Морского боя», в том числе тех, что были уже на Хабре, или у Перельмана.
Не придушит, а охотно будет ловить. Им только дай волю. Это так же, как борьба с курением. Оштрафовать приличного прохожего на улице за курение в неположенном месте всяко легче, чем ловить бандита, который отстреливается или подкупает твое начальство, или подстерегает потом твоих детей на улице.
Если будет время, не могли бы вы еще подготовить статью с описанием типичных ограничений для размещения компонентов и трассировки плат для сборки их на таком оборудовании? Есть ли какие-нибудь общие правила типа минимальных зазоров, теплового контакта дорожек и т.д.?
Валюта, которая является законным средством платежа в какой-либо стране, дает вам ту гарантию, что вы сможете заплатить ею свои долги в этой стране. Legal tender, однако. Даже если валюта обесценится — долги будут зачтены.
К сожалению, мой «всеобъемлющий» подход столкнулся со сложностями вычислительного характера, что даже на современных компьютерах просчитать все комбинации невозможно, а можно лишь искать некоторое приближение методом Монте-Карло, но и это оказалось затруднительно в реальном времени. Пока что работа над дальнейшим развитием алгоритма остановлена, но может быть я когда-нибудь вернусь к этому. А тему почитайте, там интереснее, чем во многих других исследованиях «Морского боя», в том числе тех, что были уже на Хабре, или у Перельмана.
Если будет время, не могли бы вы еще подготовить статью с описанием типичных ограничений для размещения компонентов и трассировки плат для сборки их на таком оборудовании? Есть ли какие-нибудь общие правила типа минимальных зазоров, теплового контакта дорожек и т.д.?