Кодирование приключений 1.4

Это часть серии под названием: Открытие в базовой конверсии. Нажмите здесь, чтобы увидеть часть 3

Как создать алгоритм поиска в ширину, который не является алгоритмом поиска в ширину?

Хороший вопрос.

Это был мой подход к игре.

Пусть первый игрок сделает все возможные ходы, которые он может сделать в первом раунде.

то есть, что произойдет, если игрок 1 выберет из первого целого?

Так как игра начинается с 4 ставок в каждом целом вот так

и вы говорите, что нижнее левое отверстие - это первое отверстие (отверстие, выделенное красным).

каким будет состояние доски в конце первого хода игрока 1?

это оно.

Это означает, что после первого хода игры состояние доски будет таким.

следующий вопрос будет заключаться в том, что было бы на доске, если бы игрок 1 не выбирал из первого банка, а выбирал из второго банка?

Как видите, мы получили результат, если выбрать его со 2-й лунки.

Мы могли бы задать тот же вопрос для 3-й, 4-й, 5-й и 6-й лунок.

это результаты состояния доски оставшихся горшков. первый столбец относится к положению 1-го горшка, как показано в «ayo pot 1». строки относятся к банкам, из которых выбрал первый игрок.

Примечание. Существует разница между позицией в банке и позицией в банке, из которой игрок выбрал. поэтому для игрока 1 он выбрал, скажем, позицию 4. но я мог бы сослаться на позицию сам по себе, чтобы сказать что-то о количестве ставок внутри этой позиции.

Здесь мы изучили все возможные ходы, которые первый игрок может сделать в свой первый ход.

Мы можем визуализировать это примерно так:

Каждая ветвь представляет собой путь, по которому мог пройти первый игрок в свой первый ход. Другими словами, ветви представляют банки, из которых мог выбрать игрок 1, и исходы, которые из этого вытекают.

Следующий вопрос касается хода, сделанного первым игроком, как должен ответить игрок 2?

Нам нужно будет посмотреть на 6 результатов, полученных от игрока 1, и протестировать каждый банк игрока 2 на каждом из них.

Например, если игрок 1 выбирает из банка 2,

затем игрок 2 должен проверить, каковы будут результаты, если он сделает ход из любого из горшков.

Это также необходимо было бы сделать, если бы игрок 1 выбрал из банка 1, 3, 4, 5 или 6.

это означает, что для каждого банка, который выбрал игрок 1, будет 6 возможностей, из которых может выбрать игрок 2.

следовательно, 6 * 6 = 36

Следовательно, когда это первый ход игрока 2, может произойти 36 исходов.

Что следующее?

Для умных людей вы уже видите закономерность. Когда снова наступит ход игрока 1, у каждого из этих 36 будут свои 6 других возможностей.

следовательно; 36 * 6 = 216.

Следовательно, когда снова наступит ход игрока 1, произойдет 216 исходов.

Как можно заметить, если мы увеличим слой на 1, результаты вырастут экспоненциально.

Таким образом, мы можем составить уравнение для расчета результата.

Количество исходов = 6^n

где n относится к слою.

Проблема.

Как сообщить компьютеру, откуда ссылаться?

Поскольку я не использую точность для решения этой проблемы, мне нужен способ сообщить компьютеру, откуда ссылаться.

Например, предположим, что мы исследовали первый слой и теперь знаем 6 результатов. Затем мы исследовали 2-й слой, и мы также знаем 36 результатов, нам нужен способ исследования 3-го слоя с учетом 1-го и 2-го слоев.

Решение.

Мы можем сделать «ключ»

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

Поэтому мы не можем просто использовать случайные числа,

Мы могли бы сказать что-то вроде этого. «14»

Первая цифра (1) будет обозначать банк, который выбрал первый игрок,

тогда второе число (4) будет относиться к банку, который выбрал игрок 2.

наконец, количество цифр говорит о количестве слоев. таким образом, «14» имеет 2 слоя.

Однако я не знаю, почему я не использовал этот метод,

Я использовал другой метод, чтобы решить эту проблему.

Что я сделал, так это то, что я отслеживал 2 вещи вместе. слой и начальное положение. Каждый раз, когда мы входим в новый слой, мы сбрасываем наш номер.

Например

На самом деле я назвал слои --> поколения, а начальную позицию назвал истинной позицией.

Как вы можете видеть выше, когда мы достигнем поколения 2, мы начали с 1 и дошли до 36. для поколения 3 мы бы начали с 1 до 216.

Странно, да?

Это позволило мне вызвать любой результат, скажем, поколение 2, позиция 13. Это дало бы мне результат.

Вопрос.

Откуда мне знать, как я попал в поколение 2, позицию 13, что произошло в поколении 1, позиции n, что привело к такому результату.

что, если бы я сказал вам, что вся информация, которая необходима для решения проблемы, существует в этом: поколение 2, позиция 13.

Это приводит нас к идее преобразования базы.