• 前端js实现井字游戏和版本号对比js逻辑【适用于vue和react】


    // 实现 compareVersion 方法,用于比较两个版本号(version1、version2) * 如果version1 > version2,返回1; * 如果version1 < version2,返回-1; * 其他情况,返回0。 * 版本号规则x.y.z,xyz均为大于等于0的整数,至少有x位 * * 目标: * js * compareVersion('0.1', '1.1.1'); // 返回-1 * compareVersion('13.37', '1.2 '); // 返回1 * compareVersion('1.1', '1.1.0'); // 返回0 * compareVersion('1.1', '1.1.1'); // 返回-1 * */

    const compareVersions = (version1, version2) => {
        const v1Parts = version1.split('.').map(Number);
        const v2Parts = version2.split('.').map(Number);
        const maxLength = Math.max(v1Parts.length, v2Parts.length);
        for (let i = 0; i < maxLength; i++) {
            const v1 = v1Parts[i] ?? 0;
            const v2 = v2Parts[i] ?? 0;
            if (v1 > v2) {
                return 1; // version1 大于 version2
            } else if (v1 < v2) {
                return -1; // version1 小于 version2
            }
        }
        return 0; // 两个版本号相等
    }
    const version1 = "1.1";
    const version2 = "1.1.1";
    const result = compareVersions(version1, version2);
    if (result === 1) {
        console.log(`compareVersions函数返回值→${result}:${version1} 大于 ${version2}`);
    } else if (result === -1) {
        console.log(`compareVersions函数返回值→${result}:${version1} 小于 ${version2}`);
    } else {
        console.log(`compareVersions函数返回值→${result}:${version1} 等于 ${version2}`);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    /* 井字棋游戏。输入一个二维数组代表棋盘,
    其中 * 『1』代表当前玩家的棋子,
    『0』代表没有棋子,
    『-1』代表对方玩家的棋子。 *
    若一方棋子在横、竖、斜方向连成排则为获胜,返回当前玩家是否胜出。

    • 示例:入参为 [[1,0,1],[1,-1,-1],[1,-1,0]] 时,返回 true * */
      // 默认初始棋盘
      //如下initBoard代表初始化棋盘,分别对应井字棋盘九宫格的每个格子
      const initBoard = [
      [0, 0, 0],
      [0, 0, 0],
      [0, 0, 0],
      ];
      const gameCheck = (board, currentPlayer = 1) => {
      const rows = board.length;//行
      const cols = board[0].length;//列
      // 检查行
      for (let i = 0; i < rows; i++) {
      if (board[i][0] !== 0 && board[i].every(cell => cell === currentPlayer)) {
      return true;//如果所有行都是为当前人下的那么就返回成功
      }
      }
      // 检查列
      for (let j = 0; j < cols; j++) {
      let column = [];
      for (let i = 0; i < rows; i++) {
      column.push(board[i][j]);
      }
      if (column[0] !== 0 && column.every(cell => cell === currentPlayer)) {
      return true;
      }
      }
      // 检查对角线
      // leftRight从左往右向下对角线
      const leftRight = [board[0][0], board[1][1], board[2][2]]
      // rightLeft从右往左向下对角线
      const rightLeft = [board[0][2], board[1][1], board[2][0]]
      if (leftRight.every((cell) => cell === currentPlayer) || rightLeft.every((cell) => cell === currentPlayer)) {
      return true
      }
      return false
      }
      const board = [
      [1, 0, 1],
      [1, -1, -1],
      [1, -1, 0]
      ];
      const playerWins = gameCheck(board);
      console.log(当前玩家是否胜出: ${playerWins});
  • 相关阅读:
    汽车IVI中控开发入门及进阶(二十三):i.MX8
    runtime过程中,常见jar问题解决
    网易面试总结——面试案例5~面试案例8
    ASTM D 3801固体塑料垂直燃烧试验
    没有事情做 随手写的小程序
    批量重命名与翻译文件技巧大揭秘
    @ControllerAdvice
    ThreadLocal的短板,我TTL来补
    车间调度|基于帝王蝶优化算法的车间调度(Matlab代码实现)
    如何报考华为网络工程师?
  • 原文地址:https://blog.csdn.net/zhangyizuishuai/article/details/134160685