当前位置:首页 > JavaScript

蛇形数字宫格的实现js

2026-04-05 03:51:39JavaScript

蛇形数字宫格的实现(JavaScript)

蛇形数字宫格是一个按特定顺序填充数字的矩阵,数字从左上角开始,按照蛇形路径(先从左到右,再从右到左,依次交替)填充。以下是实现方法:

初始化矩阵

创建一个空的二维数组作为矩阵,根据输入的尺寸(如 n x n)初始化所有值为 0null

function createMatrix(n) {
  return Array(n).fill().map(() => Array(n).fill(0));
}

填充蛇形数字

通过循环和方向控制填充数字。使用一个变量 direction 控制当前行是向左还是向右填充。

蛇形数字宫格的实现js

function fillSnakeMatrix(n) {
  const matrix = createMatrix(n);
  let num = 1;

  for (let row = 0; row < n; row++) {
    if (row % 2 === 0) {
      // 从左到右填充
      for (let col = 0; col < n; col++) {
        matrix[row][col] = num++;
      }
    } else {
      // 从右到左填充
      for (let col = n - 1; col >= 0; col--) {
        matrix[row][col] = num++;
      }
    }
  }

  return matrix;
}

输出矩阵

将生成的蛇形矩阵打印到控制台,便于查看结果。

function printMatrix(matrix) {
  for (let row of matrix) {
    console.log(row.join(' '));
  }
}

const n = 5; // 宫格尺寸
const snakeMatrix = fillSnakeMatrix(n);
printMatrix(snakeMatrix);

示例输出

对于 n = 5,输出如下:

蛇形数字宫格的实现js

1 2 3 4 5
10 9 8 7 6
11 12 13 14 15
20 19 18 17 16
21 22 23 24 25

动态调整方向

如果需要更灵活的方向控制(如从右到左开始),可以通过调整初始方向实现。

function fillSnakeMatrixFlex(n, startLeft = true) {
  const matrix = createMatrix(n);
  let num = 1;
  let direction = startLeft; // true: 左到右, false: 右到左

  for (let row = 0; row < n; row++) {
    if (direction) {
      for (let col = 0; col < n; col++) {
        matrix[row][col] = num++;
      }
    } else {
      for (let col = n - 1; col >= 0; col--) {
        matrix[row][col] = num++;
      }
    }
    direction = !direction; // 切换方向
  }

  return matrix;
}

支持非正方形矩阵

若需要支持 m x n 的矩形矩阵,调整初始化逻辑和填充逻辑。

function fillSnakeMatrixRect(m, n) {
  const matrix = Array(m).fill().map(() => Array(n).fill(0));
  let num = 1;

  for (let row = 0; row < m; row++) {
    if (row % 2 === 0) {
      for (let col = 0; col < n; col++) {
        matrix[row][col] = num++;
      }
    } else {
      for (let col = n - 1; col >= 0; col--) {
        matrix[row][col] = num++;
      }
    }
  }

  return matrix;
}

以上代码提供了蛇形数字宫格的完整实现,并支持扩展功能如动态方向和非正方形矩阵。

标签: 蛇形数字
分享给朋友:

相关文章

js 实现滚动数字

js 实现滚动数字

实现滚动数字的 JavaScript 方法 使用 CSS 动画和 JavaScript 控制 通过 CSS 的 transform 和 transition 属性实现数字滚动效果,JavaScript…

js实现数字时钟

js实现数字时钟

实现数字时钟的基本方法 使用JavaScript创建数字时钟可以通过多种方式实现,以下是几种常见的方法: 使用Date对象获取时间 通过JavaScript的Date对象可以获取当前的时间信息,包括…

java如何判断是不是数字

java如何判断是不是数字

判断字符串是否为数字的方法 在Java中,判断一个字符串是否为数字可以通过多种方式实现,以下是几种常见的方法: 使用正则表达式匹配 正则表达式可以高效地验证字符串是否符合数字格式,包括整数和小数。…

java 如何判断是不是数字

java 如何判断是不是数字

判断字符串是否为数字的方法 在Java中,可以通过多种方式判断一个字符串是否为数字。以下是几种常见的方法: 使用正则表达式 使用正则表达式可以简洁地判断字符串是否为数字,包括整数和小数: publ…

java如何判断是否是数字

java如何判断是否是数字

判断字符串是否为数字的方法 在Java中,可以通过多种方式判断一个字符串是否为数字。以下是几种常见的方法: 使用正则表达式 正则表达式是一种强大的字符串匹配工具,可以快速判断字符串是否符合数字格式…

php实现数字验证

php实现数字验证

使用正则表达式验证数字 正则表达式是验证数字的常用方法,可以匹配整数、浮点数或特定格式的数字。 验证整数: $number = "123"; if (preg_match('/^\d+$/…