前端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 * */

javascript 复制代码
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』代表当前玩家的棋子,

『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 = board0.length;//列
    // 检查行
    for (let i = 0; i < rows; i++) {
    if (boardi0 !== 0 && boardi.every(cell => cell === currentPlayer)) {
    return true;//如果所有行都是为当前人下的那么就返回成功
    }
    }
    // 检查列
    for (let j = 0; j < cols; j++) {
    let column = \[\];
    for (let i = 0; i < rows; i++) {
    column.push(boardij);
    }
    if (column0 !== 0 && column.every(cell => cell === currentPlayer)) {
    return true;
    }
    }
    // 检查对角线
    // leftRight从左往右向下对角线
    const leftRight = board\[00, board11, board22]
    // rightLeft从右往左向下对角线
    const rightLeft = board\[02, board11, board20]
    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});
相关推荐
kyriewen8 分钟前
折腾了半年 AI 编程工作流,最后发现效率瓶颈是桌上那块屏幕
前端·javascript·ai编程
蜗牛前端35 分钟前
codex 全流程开发上线的高颜值礼簿小程序
前端·微信小程序
大龄秃头程序员1 小时前
我在图文流 App 里落地双层缓存、弱网降级与 OOM 治理
前端
老王以为1 小时前
React Renderer 分离的多平台架构
前端·react native·react.js
hunterandroid1 小时前
Kotlin Coroutines 与 Flow:让异步任务更清晰
前端
Bigger2 小时前
从零搭建 AI 代码审查服务:一份前端也能看懂的 Python 学习笔记
前端·ci/cd·ai编程
lichenyang4532 小时前
JSAPI、NAPI、Biz、Imp:ASCF Demo 如何真正调用系统能力和 C++ 能力
前端
lichenyang4533 小时前
IPC、JSVM、UIThread、libuv:ASCF 架构图里最容易混的几个词
前端
用户059540174463 小时前
Redis记忆存储故障恢复测试踩坑实录:手动测试让我漏掉了2个一致性Bug
前端·css
用户2136610035723 小时前
Vue2脚手架工程化与Axios集成
前端·vue.js