es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Rotar la matriz 90 grados en sentido horario no funcionando correctamente.

Aquí, después de transponer la matriz, quiero invertir las filas para obtener la rotación de la matriz, pero hasta que se transponga, no da una salida adecuada.

“`javascript
import React from "react";
export default function DropDown() {
let matrix = [
[ 1, 2, 3, 4 ],
[ 1, 0, 3, 4 ],
[ 1, 2, 3, 4 ],
[ 1, 2, 3, 4 ],
];
for(let i=0;i<4;i++)
{
for(let j=0;j<i;j++) {let="" t;="" if(i!="j)" t="matrix[i][j];" matrix[i][j]="matrix[j][i];" matrix[j][i]="t;" }="" }="" for(let="" i="0;i<4;i++)" {="" for(let="" j="0;j<4/2;j++)" {let="" t;="" if(i!="j)" t="matrix[i][j];" matrix[i][j]="matrix[i][4-j-1];" matrix[i][4-j-1]="t;" }="" }="" return="" (="" <="">
{matrix.map(i=> <div>{i}</div>)}

);
}
“`</i;j++)>

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema con el código es que el segundo bucle para invertir las filas no es correcto. Debería iterar sobre las columnas de cada fila, no sobre las filas mismas. Además, la verificación de if(i!=j) no es necesaria.

    Aquí está el código corregido:

    import React from "react";
    
    export default function DropDown() {
      let matrix = [
        [1, 2, 3, 4],
        [1, 0, 3, 4],
        [1, 2, 3, 4],
        [1, 2, 3, 4],
      ];
      for (let i = 0; i < 4; i++) {
        for (let j = 0; j < i; j++) {
          let t = matrix[i][j];
          matrix[i][j] = matrix[j][i];
          matrix[j][i] = t;
        }
      }
      for (let i = 0; i < 4; i++) {
        for (let j = 0; j < 2; j++) {
          let t = matrix[i][j];
          matrix[i][j] = matrix[i][3 - j];
          matrix[i][3 - j] = t;
        }
      }
      return <>{matrix.map((i) => <div>{i}</div>)};
    }
    

    Esto transpondrá la matriz y luego invertirá cada fila para obtener la matriz girada 90 grados.

Comments are closed.