Как лучше сжать данные разрешенных ходов для игры?
От: Shmj Ниоткуда  
Дата: 16.11.25 19:16
Оценка:
Начало тут: https://rsdn.org/forum/etude/9018754.flat
Автор: Shmj
Дата: 15.11 12:34


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

Интересно что если нет этого условия — список состояний (и разрешенных ходов из данного состояния) в простом массиве занимает около 180 Кб. — что норм. Т.е. даже об этом не думал, чтобы как-то сжимать.

А вот если добавить правило запрета обратного хода — то чтобы правильно походило (с учетом запретов себя и противника) — полный список всех состояний и данных куда можно ходить — уже занимает 15.9 MB, что проблема. Т.е. уже загружать — быстро не откроется...

Что можно сделать. Очевидное — это симметрия. Левая и правая клеточка равнозначны. А вот верх и низ — уже нет, т.к. там зависит от игрока.

Т.е. за счет симметричности левого и правого — можно ужать в 2 раза.

Далее, я пишут в таком виде:

{
  red: [A1, A2, A3],
  black: [B1, B2, B3],
  redForbidden: null,
  blackForbidden: null,
  transitions: [
    [B1, C1],
    [B2, C1],
    [B2, C2],
    [B2, C3],
    [B3, C3],
  ],
}


т.е. текущее состояние и transitions — разрешенные переходы.

Но состояний то вроде не много, менее 16 тыс., значит влезет в 2 байта. Первые 4 поля значит — 8 байт с лихвой. Ну и преходы.

Еще вариант вычислять на лету, но будет нагружать слабые телефоны.
=сначала спроси у GPT=
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.