Home  >  Article  >  Web Front-end  >  Example of method to define and output spiral matrix in JavaScript

Example of method to define and output spiral matrix in JavaScript

小云云
小云云Original
2018-01-03 10:40:481207browse

This article mainly introduces the method of defining and outputting spiral matrices in JavaScript. It briefly describes the concept and principle of spiral matrices and analyzes the specific operation skills of defining and outputting spiral matrices in JavaScript in the form of examples. Friends in need can refer to it. I hope Can help everyone.

I accidentally saw such an algorithm question last night, and then I thought about using js to implement it.
After I finished writing it hastily last night, I felt that the code was ugly and smelly, so I took some time to refactor it tonight and it felt more elegant.

What is a spiral matrix

A spiral matrix refers to a spiral matrix with numbers starting from the first row and continuing to the right Get bigger, get bigger down, get bigger to the left, get bigger up, and so on.

As shown in the picture:

Achieve the effect

Implementation code

(function() {
  var map = (function() {
    function map(n) {
      this.map = [], this.row = 0, this.col = -1, this.dir = 0, this.n = n;
      // 建立个二维数组
      for (var i = 0; i < this.n; i++) { this.map.push([]); }
      // 定义移动的顺序为 右,下,左,上
      var order = [this.right, this.bottom, this.left, this.up];
      i = 0;
      do {
        // 能移动则更新数字,否则更改方向
        order[this.dir % 4].call(this) ? i++ : this.dir++;
        // 赋值
        this.map[this.row][this.col] = i;
      } while (i < n * n);
    }
    map.prototype = {
      print: function() { for (var i = 0; i < this.n; i++) { console.log(this.map[i].join(&#39; &#39;)) } },
      // 向该方向移动
      left: function() { return this.move(this.row, this.col - 1); },
      right: function() { return this.move(this.row, this.col + 1); },
      up: function() { return this.move(this.row - 1, this.col); },
      bottom: function() { return this.move(this.row + 1, this.col); },
      // 如果坐标在范围内,并且目标没有值,条件满足则更新坐标
      move: function(row, col) {
        return (0 <= row && row < this.n) && (0 <= col && col < this.n) && !this.map[row][col] && (this.row = row, this.col = col, true);
      },
    };
    return map;
  })();
  new map(6).print();
})();

Related recommendations:

How PHP operates two-dimensional array matrix transpose

Detailed explanation of how to define and output a spiral matrix in JavaScript_javascript skills

How to create a symmetric matrix in Python based on the numpy module

The above is the detailed content of Example of method to define and output spiral matrix in JavaScript. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn