ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript_javascriptスキルでスパイラル行列を定義・出力する方法を詳しく解説

JavaScript_javascriptスキルでスパイラル行列を定義・出力する方法を詳しく解説

韦小宝
韦小宝オリジナル
2017-12-04 13:49:152139ブラウズ

この記事では主に

JavaScriptでスパイラル行列を定義して出力する方法を紹介し、スパイラル行列の概念と原理を簡単に説明し、JavaScriptのスパイラル行列を定義して出力する具体的な操作スキルを例と組み合わせて分析します。 JavaScriptに役立ちます興味のある友人はこの記事を参照してください

この記事の例では、JavaScriptでスパイラル行列を定義して出力する方法を説明します。参考までに共有します。詳細は次のとおりです:

昨夜偶然そのようなアルゴリズムの質問を見て、jsを使用して実装することを考えました。

昨夜急いで書き終えた後、コードが醜くて臭いと感じたので、今夜ゆっくりリファクタリングして、よりエレガントな感じになりました。

スパイラル行列とは

スパイラル行列とは、最初の行から右、下、左、上に向かって番号が大きくなる

ループを指します。

写真に示すように:

達成効果

実装コード


(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();
})();

この記事の内容がすべてです。大丈夫だと思います。持ってきてくださいクラスメートに助けてもらいます。

関連する推奨事項:

jsコードケースリスト - 日付に基づいて曜日を計算する

JS切り替え画像スライドショー切り替え効果

遅延読み込みとクロスの実装手順-Jsを使用したドメイン実装

以上がJavaScript_javascriptスキルでスパイラル行列を定義・出力する方法を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。