Я пишу класс состояний, представляющий состояние доски для ног. Я хочу найти соседние государства текущего состояния. Соседи в основном являются текущим состоянием с добавлением, что одна из ячеек заполнена.
Каждая ячейка может быть «пустой», «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) В моем классе состояний я сохраняю представление пустых ячеек, используя целые числа или биты. При таком подходе я могу легко взять пустые клетки. Это требует больше памяти, но экономит больше времени.
Это два подхода, которые я придумал, и у каждого из них есть свои плюсы и минусы (хотя и довольно незначительные), но я чувствую, что может быть какой-то хитрый прием манипуляции, который я могу использовать, чтобы сделать то, что я хотеть. Любой совет?