GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Verificar adjacência em Matriz 3x3

java
Tags: #<Tag:0x00007f9de5659138>

#1

Uma função recebe uma matriz 3x3 preenchida de 1 a 9 em posições aleatórias. Também recebe a posição de determinado número da matriz, a função tem que verificar se essa posição recebida é adjacente ao número 9, caso for fazer a troca de posição entre eles.
Como faço isso?


#2

Legal, e quer ajuda com o quê exatamente?

Abraço.


#3

Como fazer isso. kk


#4

Desenha essa matriz no papel
Preenche com os valores aleatoriamente

Você consegue nos descrever como faz para verificar se um número é adjacente ao 9 nessa matriz que você desenhou?


#5

6 7 4
9 1 2
5 8 3
supondo essa matriz, e a posição do valor 1, pra mudar o 1 de posição eu teria que verifica se o número acima dele é o 9, ou abaixo, ou do lado esquerdo/direito. Mas não sei como colocar isso no código.

fiz o seguindo código:

 for (int linha = 0; linha < matriz.length; linha++) {
            for (int coluna = 0; coluna < matriz.length; coluna++) {
                if (matriz[linha][coluna] == 9) {
                    matriz[linha][coluna] = matrizJogo[posicaoX][posicaoY];
                    matriz[posicaoX][posicaoY] = 9;
                }
            }
        }

mas está errado, pois ele mudar de posição independente se a posição X,Y for adjacente ao 9.


#6

O seu número tem uma posição (x, y) certo?
Onde x é o índice da coluna e y é o índice da linha

O número à esquerda está na posição (x - 1, y)
O número à direita está na posição (x + 1, y)
O número acima está na posição (x, y - 1)
O número abaixo está na posição (x, y + 1)

É só usar esses índices.

Lembrando que:
Na primeira coluna não haverá números à esquerda
Na última coluna não haverá números à direita
Na primeira linha não haverá números acima
Na última linha não haverá números abaixo

Essa lógica funciona pra qualquer matriz M x N


#7

Funcionou agora. Valeu. <3