Во-первых, имейте в виду, что моделирование этой симметрии является оптимизацией . Вам не нужно захватывать все, это компромисс между усилиями, сложностью представления и достигнутыми результатами.
Кроме того, это не помогает локализовать каждую отдельную деталь в треугольнике a1-d1-d4. Вам нужно беспокоиться обо всех частях на доске сразу и как они соотносятся друг с другом. Не имеет смысла рассматривать две ладьи на a1 и h1, поскольку на самом деле оба находятся на a1.
Что вы можете сделать, так это «нормализовать» все доски по отношению к симметрии. Вам нужен алгоритм для определения нормальной формы. Например, вы можете сначала преобразовать белого короля в этот треугольник, затем выполнить любые оставшиеся преобразования, которые удерживают белого короля там, и переместить черного короля в стандартное место (я выбрал королей, потому что они, несомненно, будут на борту и быть уникальным). Как вы заметили, многие преобразования будут действительны только в том случае, если нет пешек слева, а рокировка недействительна, что в любом случае существенно ограничивает возможности.
Наряду с этой нормализацией вам необходимо отслеживать операции, которые вы сделали, чтобы преобразовать плату в ее обычную форму, чтобы впоследствии можно было отменить преобразование. Например, если вы представляете пользователю последовательность выигрышных движений, лучше быть на реальной доске, а не на трансформированной.
Эта нормализация тогда применима в сочетании с любой существующей базой данных, которую вы создаете. Если вы знаете какое-либо свойство (например, выигрышные ходы) платы X, а плата Y нормализуется до платы X, то вы также знаете это свойство платы Y, при условии отмены необходимых преобразований. При добавлении позиций в базу данных вы должны делать это на основе нормализованной платы.
Я не думаю, что основное представление шахматной доски особенно важно для полезности этой техники.
Я действительно не понимаю, что вы хотите знать. Помогает ли это? - Храните одну плату для всех симметричных плат, затем, проверяя плату, попробуйте все зеркалирования и симметрии и проверьте, сохранен ли он. – Dukeling