我正在寻找一个简单的JavaScript公式,将计算用户在框中键入的X是否形成矩形或正方形.

我try 了一个循环来做这件事,但我想我把它搞得太复杂了.

基本上我是这样存储数据的(Typescript )

public proposedArray: Array<Array<boolean>> = [];

我已经在下面的有效/无效选项中绘制了一个图表.有谁能帮帮我吗?

谢谢!

enter image description here

推荐答案

是的,循环听起来是个天真的 Select .循环,直到找到一个"真".然后计算宽度和高度,并期望范围内的所有单元格也为"真".如果是这样,那么在清除了我们发现的那些之后,预计不会有更多的"真".

var mat = [
  [0, 0, 0],
  [1, 1, 0],
  [1, 1, 0]
];



function has_square(mat) {
  var found_square = false;
  for (var i = 0; i < mat.length; i++) {
    for (var j = 0; j < mat[i].length; j++) {
      var value = mat[i][j]
      if (value) {
        if (found_square) {
          // not allowed 2 squares
          return false;
        }
        var w = 1;
        for (var k = j + 1; k < mat[i].length; k++) {
          if (!mat[i][k]) {
            break;
          }
          w++;
        }
        var h = 1;
        for (var l = i + 1; l < mat.length; l++) {
          if (!mat[l][j]) {
            break;
          }
          h++;
        }

        // now expect all to be true in [i,j] - [i+h, j+w]
        for (var y = 0; y < h; y++) {
          for (var x = 0; x < w; x++) {
            if (!mat[i + y][j + x]) {
              return false;
            }
            // clear values
            mat[i + y][j + x] = 0
          }
        }
        found_square = true;
      }

    }
  }
  return found_square;
}

console.log(has_square(mat))

Javascript相关问答推荐

类型脚本中只有字符串或数字键而不是符号键的对象

了解Node.js中的EventEums和浏览器中的addEventEums之间的关系

浮动Div的淡出模糊效果

用JavaScript复制C#CRC 32生成器

Chromium会将URL与JS一起传递到V8吗?

处理时间和字符串时MySQL表中显示的日期无效

显示图—如何在图例项上添加删除线效果?

获取Uint8ClampedArray中像素数组的宽度/高度

如何将react—flanet map添加到remixjs应用程序

Prisma具有至少一个值的多对多关系

如何在.NET Core中将chtml文件链接到Java脚本文件?

让chart.js饼图中的一个切片变厚?

Reaction Redux&Quot;在派单错误中检测到状态Mutations

向数组中的对象添加键而不改变原始变量

如果没有页面重新加载Angular ,innerHTML属性绑定不会更新

将多个文本框中的输出合并到一个文本框中

在GraphQL解析器中修改上下文值

我无法在Api Reaction本机上发出GET请求

JSX/React -如何在组件props 中循环遍历数组

使用JAVASCRIPT的偏移力矩函数库问题