Броненосец ИИ о затоплении по определенным правилам [закрыто]

У меня возникли некоторые проблемы с поиском того, можно ли по определенным правилам кодировать эффективный ИИ для тонущей части линкора.

Правила таковы:

длина самого короткого корабля может быть даже 1. Вы узнаете об этом в начале, когда игровой менеджер дает вам массив кораблей для размещениякорабли могутт, но они могут быть смежнымиИгровой менеджер сообщает вам, был ли ваш последний удар попаданием, потопом или промахом. Нет информации о длине корабля, на который вы попали / затонули

Ну, что я неОфициально выразить это длина затонувших кораблей. Я могу'Я не вижу способа понять, как только я потоплю корабль, его длину.

Я хотел бы использовать подход плотности, чтобы оценить, куда стрелять, основываясь на длине неподвижных кораблей, но без системы, позволяющей определить длину затонувшего корабля, моя плотность никогда не достигнет ».умнее», В настоящее время я просто сохраняю точки «Север», «Юг», «Восток» и «Запад» для каждого попадания и рассматриваю работу, выполненную, когда мой стек пуст. Тот'Конечно, она очень потребляет.

Я пытаюсь уточнить, что яСпрашиваю: предположим, у вас есть двумерный массив, в котором вы отслеживаете результаты своих снимков следующим образом:

ты = неизвестное место

m = вы стреляли в x, y, и игровой менеджер сказал вам "Мисс"

h = вы стреляли в x, y, и игровой менеджер сказал вам "удар"

s = вы стреляли в x, y, и игровой менеджер сказал вам "просели»

Предположим, что доска 5 * 5. В начале у вас есть это:

      1 2 3 4
    1 u u u u
    2 u u u u
    3 u u u u
    4 u u u u

Предположим, вы стреляете по 2, 3, а менеджер игры говорит вам:удар"Теперь у вас есть:

      1 2 3 4
    1 u u u u
    2 u u h u
    3 u u u u
    4 u u u u

хорошо, теперь вы начинаете осматривать свой последний выстрел. Неважно, используете ли вы подход с плотностью или стопку N / S / E / W мест, откуда вы попали. Позволять'скажем, ваш алгоритм составил 3, 3. На этот раз промах:

      1 2 3 4
    1 u u u u
    2 u u h u
    3 u u m u
    4 u u u u

так что теперь вы пытаетесь 2, 2, и этохит:

      1 2 3 4
    1 u u u u
    2 u h h u
    3 u u m u
    4 u u u u

теперь давайскажи 2,1 и менеджер игры скажет тебепросели ":

      1 2 3 4
    1 u u u u
    2 s h h u
    3 u u m u
    4 u u u u

Хорошо: зная, что корабли могут быть смежными, как вы узнаете длину корабля, который выВы просто утонули без стрельбы в каждом месте N / S / E / W? В этом случае для вас 'Мне нужно стрелять по 2,4 и по 1,3, чтобы быть почти уверенным в том, что ты потопил, и этос очереди потребляет. См. Пример Марка Бесси ниже: такие ситуации потребляют еще больше ходов && неуверенный, чем мой.

Так что вопрос прост: нетНичего лучше, чем этот N / S / E / W, требующий много времени && неопределенный подход?

Надеюсь, это проясняет вопрос.

постскриптум Я'я в курсеэтот вопрос, Но я могу'не читал язык C # ... только начал несколько месяцев назад с Java :)

постскриптум 2 яя в курсеэтот также (см. последние иллюстрации), где, насколько я понимаю, все выглядит совершенно одинаково, за исключением того факта, что он считает min length = 2. Я всегда мог бы написать 2 алгоритма (один, если я обнаружу min длина> 1, еще один "оказывается потребляющим если min длина = 1), но я нене понимаю, как ему это удается ... похоже, он учитывает только плотность ...

постскриптум 3 Почему закрыто? Я'Я ищу алгоритм, работающий в условиях ... Я дал условия и то, что алгоритм должен делать. Как я могу это уточнить? Как мне выразить этот вопрос? (извините за вопрос, полемика не предназначена, просто учусь)

Ответы на вопрос(1)

Ваш ответ на вопрос