javascript - jScript - 如何 "mirror"矩阵(多维数组)

标签 javascript arrays matrix multidimensional-array

我最近的练习要求我这样做:

“给定一个 N*M 的多维数组(其中 N 是行,M 是列),创建一个函数,如果该多维数组可以被视为镜像,则返回 TRUE。如果满足以下条件,则该多维数组可以被视为镜像:数组[i][j]===数组[j][i]”。

我的想法非常基本(考虑数组已经初始化):

根据要求进行小修改---

var rows=prompt(), columns=prompt();   //I usually use an asknum() function
   var matrix = new Array (rows);
   function myMatrix (arr,col,rows){
    for(i=0;i<arr.length;i++){
    myArray[i] = new Array() 
    for(j=0;j<col;j++){
      myArray[i][j]=asknum();  //this is a prompt function specified to insert numbers
    }
  }



myMatrix(matrix,columns,rows);



var isMirror=0;  //counter to check if it is or is not a mirror
var getMatrix = function (rows,columns) {
                    if(rows===columns) {  
                       return rows*(columns-1);
                     }
                    }
function findMirror (arr)  {    
for(i=0;i<arr.length;i++){
 for(j=0;j<arr[i].length;j++){
  if(arr[i][j]===arr[i.length-1-j][j.length-1-j] && i!=j){
     isMirror++;
    }
   }
  }
if(isMirror===getMatrix(rows,columns)){
  return true;
} else {
  return false;
 }
}

findMirror(matrix);

2个可能的矩阵,以便您可以更好地理解我的思维方式:

  3x3              5x5
[1,2,3]        [1,2,3,4,5]
[2,1,2]        [2,2,2,1,4]
[3,2,1]        [3,2,3,2,3]
               [4,1,2,4,2]
               [5,4,3,2,1]

正如您自己所看到的,在 3x3 镜像中(不计算主对 Angular 线的元素),镜像元素的数量为 6,并且 3*2=6。在5x5镜像中,元素数量为20个,5*4=20以此类推。我已经尝试过 7x7,但我猜这是一个可行的理论,所以我围绕这种可能性研究了我的函数。

求助,谢谢<3

最佳答案

我的第一个观察是,您只需要迭代矩阵的上半部分 - 例如检查是否 array[1][2] == array[2][1],无需继续并检查 array[2][1] == array[1][2]。正如您已经注意到的那样,无需检查 array[x][x] == array[x][x] 是否。

其次,只要发现一个不匹配的元素,就可以立即返回 false。因此,没有必要计算匹配的数量,然后在最后检查计数。

最后,如果矩阵的维度不相同,那么它当然不可能是镜子。

这可能有效:

function checkMirror(arr) {
    for (i=0; i<arr.length; i++) {
        if (arr.length != arr[i].length) {
            return false;
        }
        for (j=i+1; j<arr.length; j++) {
            if (arr[i][j] !== arr[j][i]) {
                return false;
            }
        }
    }
    return true;
}

关于javascript - jScript - 如何 "mirror"矩阵(多维数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20556937/

相关文章:

javascript - 使用文件对话框获取 PHP 中的完整文件名

javascript - 如何获取参数对象的子集? (关于可变大小的参数)

javascript - 如何使用类型缺少调用或构造签名的表达式解析 ' error TS2351: Cannot use ' new'?

javascript - 过滤/排序数组

javascript - 在 findOneAndUpdate Mongoose 5.x 之后从数组中检索特定记录

r - 将矩阵划分为子组矩阵

r - 二进制矩阵中的 1 组群

javascript - 页面上具有相同的小部件多次发生时间/变量冲突

javascript - [] 前没有分号导致 JavaScript 出错

java - 在 Opengl 中使用 theta 和 phi 角度进行旋转