前端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』代表当前玩家的棋子,
『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});
相关文章:
前端js实现井字游戏和版本号对比js逻辑【适用于vue和react】
// 实现 compareVersion 方法,用于比较两个版本号(version1、version2) * 如果version1 > version2,返回1; * 如果version1 < version2,返回-1; * 其他情况,返回0。 * 版本号规…...
unity 通过Andriod arr 访问 手机自带的浏览器
unity 通过Andriod arr 访问 手机自带的浏览器 using System.Collections; using System.Collections.Generic; using System.IO; using UnityEngine; using UnityEngine.UI;public class OpenURL : MonoBehaviour {public Button button;string url "http://192.168.1.…...
MySQL -- 索引
MySQL – 索引 文章目录 MySQL -- 索引一、索引简介1.简介2.索引效率的案例 二、认识磁盘1.磁盘2.结论3.磁盘随机访问(Random Access)与连续访问(Sequential Access) 三、MySQL 与磁盘交互基本单位1.基本单位2.MySQL中的数据管理 五、索引的理解1.索引案例2.单页mysql page3.管…...
23ccpc(最长上升子序列题解)
你原本有一个 1 到 n 的排列但是不慎地你遗忘了它但是你记得以 第i个位置 结尾的最长上升子序 列的长度数组 an 现在希望你能够构造一个符合条件的排列 p 如果不存在符合上述条件的排列 p 则输出 −1。 这里定义以 第i位置 结尾的最长上升子序列的长度为符合…...
BUUCTF easycap 1
BUUCTF:https://buuoj.cn/challenges 题目描述: 下载附件,解压得到一个.pcap文件。 密文: 解题思路: 1、这道题和它的名字一样,真的很easy。双击easycap.pcap文件,打开Wireshark。在Wireshark中…...
[LeetCode]-160. 相交链表-141. 环形链表-142.环形链表II-138.随机链表的复制
目录 160.相交链表 题目 思路 代码 141.环形链表 题目 思路 代码 142.环形链表II 题目 思路 代码 160.相交链表 160. 相交链表 - 力扣(LeetCode)https://leetcode.cn/problems/intersection-of-two-linked-lists/description/ 题目 给你两个…...
聊一聊关于手机Charge IC的电流流向
关于手机Charge,小白在以前的文章很少讲,一是这部分东西太多,过于复杂。二是总感觉写起来欠缺点什么。但后来想一想,本是抱着互相学习来写文章的心理态度,还是决定尝试写一些。 关于今天要讲的关于手机Charge的内容&a…...
【k8s】pod调度——亲和,反亲和,污点,容忍
官方网址:https://kubernetes.io/zh/docs/concepts/scheduling-eviction/assign-pod-node/ 一、亲和性 (1)节点亲和性 pod.spec.nodeAffinity ●preferredDuringSchedulingIgnoredDuringExecution:软策略 p开头 ●requiredDuri…...
分享者 - 携程旅游创作者搬砖项目图文教程
大家好!携程这个出行旅游平台相信大家都不陌生吧。 每天都有大量的旅客在里面浏览攻略,寻找灵感和旅游建议。 那么,我们的项目就是把一些优质的小红书平台上的旅游攻略或作品,经过处理后搬运到携程平台上发布。 这个项目如何操作呢…...
vite配置.env环境变量文件,开发环境,测试环境,预发布环境,生产环境
在vue2,用的vue-cli脚手架搭建项目,cli用的是webpack 当你yarn dev时,命令会启动package.json中的dev键名的值,也就是后面的一行命令 这时浏览器会去识别你是开发环境还是生产环境,其实windows是不能直接识别你是开发…...
0003Java安卓程序设计-springboot基于Android的学习生活交流APP
文章目录 **摘** **要**目 录系统设计开发环境 编程技术交流、源码分享、模板分享、网课教程 🐧裙:776871563 摘 要 网络的广泛应用给生活带来了十分的便利。所以把学习生活交流管理与现在网络相结合,利用java技术建设学习生活交流APP&…...
Java8 时间字符串校验是否为对应的日期格式
时间字符串格式校验 严格模式下校验日期字符串 public static boolean isDateStrict(String dateStr, String pattern) {try {DateTimeFormatter formatter new DateTimeFormatterBuilder().appendPattern("yyyyMMdd").parseDefaulting(ChronoField.ERA, 1).toFor…...
2023.11.6联赛总结
T 1 T1 T1让你构造出一个不超过 40 ∗ 40 40*40 40∗40的矩阵,满足连续的 r y x ryx ryx有 n n n个。 一开始我想着直接放 r y x ryx ryx,这个做法有 80 80 80分,但是打挂了,再调了将近1个小时后,选择先跳过ÿ…...
UE5——源码阅读——9——引擎预初始化
加载项目模块 判断项目是否是有意义的 准备读取模块 对应着错误信息 广播 加载插件模块 根据配置是否已经启用插件 开始遍历所有的插件 尝试读取插件 检查上一次完成的加载阶段是否大于当前的加载阶段 通知加载完成...
报错Could not resolve placeholder ‘driver‘ in value “${driver}“
这是我的报错: 原因是我的applicationContext.xml文件加载properties文件径错误: 应该把路径改成这样就可以了:...
Rust编程基础核心之所有权(下)
1.变量与数据交互方式之二: 克隆 在上一节中, 我们讨论了变量与数据交互的第一种方式: 移动, 本节将介绍第二种方式:克隆。 如果我们 确实 需要深度复制 String 中堆上的数据,而不仅仅是栈上的数据,可以使用一个叫做 clone 的通用函数。 看下面的代码…...
高防CDN:企业网络安全的坚强后盾
随着互联网的快速发展,企业的网络面临着越来越多的安全威胁。在这种背景下,高防CDN(Content Delivery Network)已经成为了企业网络安全的坚强后盾。本文将理性分析高防CDN对于企业发展的影响,强调其在维护网络稳定性、…...
gitlab 设置 分支只读
一,设置master分支只读, 并且只有Maintainers 拥有合并权限。 二,设置成员权限 改为developer 三,邀请成员 点击右上角 Invite Members...
Spring Boot 面试题——常用注解
目录 Spring Bean将一个类声明为 Bean自动装配 Bean声明 Bean 的作用域 前端后传值处理常见的 HTTP 请求类型读取配置文件定时任务全局 Controller 层异常处理 Spring Bean 将一个类声明为 Bean Component:通用的注解,可标注任意类为 Spring 组件。如果…...
RabbitMQ(高级特性) 设置队列所有消息存活时间
RabbitMQ可以设置消息的存活时间(Time To Live,简称TTL),当消息到达存活时间后还没有被消费,会被移出队列。RabbitMQ可以对队列的所有消息设置存活时间,也可以对某条消息设置存活时间。 Configuration pub…...
ai辅助部署openclaw:让快马智能适配ubuntu环境与反爬策略
AI辅助部署OpenClaw:让快马智能适配Ubuntu环境与反爬策略 最近在尝试用OpenClaw抓取一些动态加载的网站数据,发现直接部署基础版本根本行不通。目标网站不仅有动态渲染的内容,还设置了各种反爬机制。好在发现了InsCode(快马)平台的AI辅助开发…...
轻舟体重管理大模型:赋能减重全病程管理,构建智能体重健康生态
在“健康中国2030”战略深入推进的背景下,慢性病防控与全民体重管理已成为公共卫生体系的重要议题。随着肥胖及相关代谢性疾病发病率持续上升,传统的体重干预模式已难以满足全人群、全生命周期的健康管理需求。在此趋势下,基于人工智能技术的…...
Glide框架在Java中的高效集成与动图加载实践
1. 为什么选择Glide处理Java项目中的动图加载 第一次在Android项目里遇到动图加载需求时,我试过用原生ImageView逐帧解析,结果内存直接爆了。后来发现Glide这个宝藏框架,它就像个智能的动图管家,把复杂的解码、内存管理、缓存优化…...
Vue2项目构建优化实战:时间戳防缓存与资源压缩的配置详解
1. 为什么Vue2项目需要构建优化 最近接手了一个老项目的维护工作,发现每次前端更新后总有用户反馈页面显示异常。排查后发现是浏览器缓存惹的祸——用户访问的仍然是旧版本的静态资源。这让我意识到构建优化的重要性,特别是对于需要频繁更新的业务系统。…...
【论文速递】BubbleRAG:为“黑盒”知识图谱打造高召回、高精度的证据检索引擎
黑盒知识图谱检索中的三个挑战:语义实例化不确定性、结构路径不确定性、证据比较不确定性 01 研究背景 在复杂问答(如多跳推理、专家识别)任务中,基于知识图谱(KG)的检索增强生成(RAG&#x…...
GitHub新手避坑指南:从SSH Key到Personal Token,搞定本地项目上传(含大文件失败解决方案)
GitHub新手避坑指南:从SSH Key到Personal Token,搞定本地项目上传(含大文件失败解决方案) 第一次用GitHub上传项目就像玩扫雷游戏——表面风平浪静,实际暗藏玄机。上周帮实习生小李排查上传失败问题时,发现…...
BurpSuite导入P12证书遇到密码问题?3种无密码解决方案实测
BurpSuite导入P12证书遇到密码问题?3种无密码解决方案实测 在企业安全测试和渗透评估过程中,客户端证书认证是常见的防护机制。当BurpSuite提示需要P12证书密码而您又无法获取时,整个测试流程可能陷入僵局。本文将分享三种经过实战验证的解决…...
VMware 16 安装win,Win11推荐下载链接(不要选arm)
目录Win11下载链接待续、更新中......Win11下载链接 ed2k://|file|zh-cn_windows_11_consumer_editions_version_22h2_updated_sep_2022_x64_dvd_23d39103.iso|5579771904|33C7EC6485AD8C55ADFB550FA1A0F270|/ 待续、更新中… 1 顿号、: 先使用ctrl. ,再使用一遍切…...
表贴式PMSM超前角弱磁控制策略:弱磁id=0控制速度提升研究,从2000rpm到4000rp...
该模型实现表贴式PMSM的超前角弱磁控制策略 不打开弱磁id0控制速度只能达到2000rpm,打开能够弱磁到4000rpm在调试表贴式永磁同步电机(PMSM)时,发现一个有趣的现象:当保持id0的传统控制策略时,电机转速死活卡…...
终极Übersicht小部件调试指南:10个实用工具和高效方法
终极bersicht小部件调试指南:10个实用工具和高效方法 【免费下载链接】uebersicht ˈyːbɐˌzɪt 项目地址: https://gitcode.com/gh_mirrors/ue/uebersicht bersicht是一款强大的macOS桌面小部件工具,让开发者能够在桌面上创建和运行自定义小部…...
