Представление состояния платы ti c ta c toe с использованием набора битов; как эффективно найти соседние государства? - PullRequest
2 голосов
/ 21 февраля 2020

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

Каждая ячейка может быть «пустой», «X» или «O». Для каждой ячейки я использую 2 бита для ее представления:

00 (empty)

01 (filled by X)

10 (filled by O)

Так что для платы 3x3 я буду использовать 18 бит (я знаю о более эффективных методах памяти, но пока этого достаточно) .

Есть два способа получить соседние состояния, и у каждого есть свои плюсы и минусы:

(1) Я могу найти пустые ячейки, просматривая размер 18 битовый набор и убедитесь, что оба значения state_in_bits[i] и state_in_bits[i+1] равны нулю для четного i. Это более эффективно использует память, но не так эффективно, как (2).

(2) В моем классе состояний я сохраняю представление пустых ячеек, используя целые числа или биты. При таком подходе я могу легко взять пустые клетки. Это требует больше памяти, но экономит больше времени.

Это два подхода, которые я придумал, и у каждого из них есть свои плюсы и минусы (хотя и довольно незначительные), но я чувствую, что может быть какой-то хитрый прием манипуляции, который я могу использовать, чтобы сделать то, что я хотеть. Любой совет?

...