Проверка симметрии в сетке с помощью java

Мне нужна помощь с игрой, которую я делаю:

Игра следующая. Есть два игрока, «B» и «N». Есть сетка символов. Оба игрока по очереди размещают символ (B или N в зависимости от того, кто они) на сетке. Каждый раз, когда они помещают символ, я должен проверять, происходит ли симметрия. Например. Существуют различные типы симметрии. Горизонтальные и вертикальные в каждом квадрате 2*2, 3*3 и 4*4, содержащем только что помещенный здесь символ. В случае симметрии 3*3 средняя строка или столбец не имеет места в симметрии.

Я сделал все до сих пор, кроме симметрии. Мне трудно их делать. У меня есть идея, как их сделать, но индивидуально. Кто-нибудь из вас знает, как я могу сделать симметрии только одним методом?


person Narkast    schedule 17.10.2014    source источник
comment
Вопрос немного широкий. Что у вас есть на данный момент, что пытается решить проблему?   -  person Paul Richter    schedule 17.10.2014
comment
Для каждой возможной симметрии у меня есть метод их решения. Например, для симметрии 2x2 я спрашиваю: если размещенный символ такой же, как тот, что над ним, сделайте следующее: если символ справа от него такой же, как тот, что над ним: действительная симметрия, если символ слева от него такой же, как и над ним: правильная симметрия, если размещенный символ такой же, как и тот, что под ним, сделайте следующее: если символ справа от него такой же, как тот, что над ним, действительная симметрия, если символ слева от него такой же, как и тот, что над ним, действительная симметрия   -  person Narkast    schedule 17.10.2014


Ответы (1)


Java-код для чего-то подобного тому, что вы описали для сетки размером n на n, будет выглядеть примерно так:

boolean isHorizontallySymmetrical(char[][] grid, int n){
    int across = n / 2;

    for(int i = 0; i < n; i++){
        int right = 0
        for(int left = 0; left < across; left++){
            right = n - left - 1;

            if(grid[i][left] != grid[i][right]){
                return false;
            }
        }
    }

    return true;
}

Подобная вещь потребуется для функции вертикальной симметрии.

person Basim Khajwal    schedule 17.10.2014