c语言数独合法验证,JavaScript数独验证
Js数独验证
image.png
在网上看到一道数独验证的题。
数独游戏是在一个9*9的方格中进行填数字的游戏,需要满足的规则是每行每列和每个子九宫格都是1~9的不重复数字
需要完成的:给定一个九项的二维数组,用代码确认九宫格的填写是否符合数独规则;
例如:
var board = [
[5, 3, 4, 6, 7, 8, 9, 1, 2],
[6, 7, 2, 1, 9, 5, 3, 4, 8],
[1, 9, 8, 3, 4, 2, 5, 6, 7],
[8, 5, 9, 7, 6, 1, 4, 2, 3],
[4, 2, 6, 8, 5, 3, 7, 9, 1],
[7, 1, 3, 9, 2, 4, 8, 5, 6],
[9, 6, 1, 5, 3, 7, 2, 8, 4],
[2, 8, 7, 4, 1, 9, 6, 3, 5],
[3, 4, 5, 2, 8, 6, 1, 7, 9]
]
validSolution(board);
=>true
我的想法是,既然每行每列每个子九宫格都是1~9的不重复数字,也就是说只要判断这三个条件满足和为45就好了;
var equals = function(number){
return n==45;
}//判断结果是否为45
很明显 board有9行9列 判断9行需要一次遍历 判断9列又需要一次,看起来有点麻烦。
我们可以把行的和列的相加结果放在数组里,最后遍历两个数组来进行判断。
var validSolution = function(board){
var rows = [0,0,0,0,0,0,0,0,0];
var columns = [0,0,0,0,0,0,0,0,0];
for(var i=0;i<9;i++){
//i表示行 j表示列
for(var j=0;j<9;j++){
rows[i]+=board[i][j];
columns[j]+=board[i][j];
}
}
}
很简单的 rows和columns里就有了前两个条件的数据,接下来是第三个条件
每个九宫格的和都是45
找一下子格在二维数组的规律
01 02 03
11 12 13
21 22 23
没找到,再来一个
04 05 06
14 15 16
24 25 26
可以看出,小格是以三行或者三列为一个单位的,小格的相加数可以组成一个二维数组
[[0,0,0],[0,0,0],[0,0,0]]
于是,第三个条件也可以做了
var osums = [[0,0,0],[0,0,0],[0,0,0]];
for(var i=0;i<9;i++){
for(var j=0;j<9;j++){
osums[Math.floor(i/3)][Math.floor(j/3)] += board[i][j];
}
}
与上面的整合起来就是
var equals = function(number){
return number==45;
}//判断结果是否为45
var validSolution = function(board){
var rows = [0,0,0,0,0,0,0,0,0];
var columns = [0,0,0,0,0,0,0,0,0];
var osums = [[0,0,0],[0,0,0],[0,0,0]];
for(var i=0;i<9;i++){
//i表示行 j表示列
for(var j=0;j<9;j++){
rows[i]+=board[i][j];
columns[j]+=board[i][j];
osums[Math.floor(i/3)][Math.floor(j/3)] += board[i][j];
}
}
for (var i=0;i<3;i++) if (!osums[i].every(equals)) return false;
return (rows.every(equals) && columns.every(equals));
}
这样的结果是可以通过我们上面例子的验证的 但是...(下回更)
c语言数独合法验证,JavaScript数独验证相关推荐
- html正则表达式登录验证,JavaScript正则表达式验证登录实例
本文实例为大家分享了js正则表达式验证登录的具体代码,供大家参考,具体内容如下 代码片段: qq登录模拟测试 function check(){ /*非空*/ if(form1.username.va ...
- 常用正则表达式,常用表单验证javascript代码
常用正则表达式,常用表单验证javascript代码 function f_MobilCheck(as_SourceString) { if(as_SourceString.match(/^13[0 ...
- php注册登录课件,登录注册验证(javascript)-php教学课件5.pdf
登录注册验证(javascript)-php教学课件5.pdf 还剩 33页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! ...
- laravel 自动验证,提示验证成功,失败信息,引入语言包
JavaScript也可以进行一些验证操作,但是有些情况下不好用(禁用JavaScript).这时候就要使用后端的一些机制.能够在后端对用户提交的数据进行验证,这个就是后端的自动验证. 案例:编写自动 ...
- html正则表达式验证电话号码,Javascript正则表达式验证账号、手机号、电话和邮箱的合法性...
正则表达式是用于匹配字符串中字符组合的模式.在 JavaScript中,正则表达式也是对象.这些模式被用于 RegExp 的 exec 和 test 方法, 以及 String 的 match.rep ...
- html验证座机号码_使用JavaScript正则表达式验证电话、手机号码
使用 JavaScript 正则表达式验证电话.手机号码 电话手机号码正则表达式 (支持手机号码, 3-4 位区号, 7-8 位直播号码, 1 - 4 位分机号) ((\d{11})|^((\d{7, ...
- R语言临床预测模型的评价指标与验证指标实战:净重新分类指数NRI(Net Reclassification Index, NRI)
R语言临床预测模型的评价指标与验证指标实战:净重新分类指数NRI(Net Classification Index, NRI) #净重新分类指数NRI
- R语言构建xgboost模型:交叉验证(cross validation)训练xgboost模型,配置自定义的损失函数评估函数并使用交叉验证训练xgboost模型
R语言构建xgboost模型:交叉验证(cross validation)训练xgboost模型,配置自定义的损失函数(loss function).评估函数(evaluation function) ...
- R语言构建xgboost模型:交叉验证(cross validation)训练xgboost模型
R语言构建xgboost模型:交叉验证(cross validation)训练xgboost模型 目录
- R语言临床预测模型的评价指标与验证指标实战:综合判别改善指数IDI(Integrated Discrimination Improvement, IDI)
R语言临床预测模型的评价指标与验证指标实战:综合判别改善指数IDI(Integrated Discrimination Improvement, IDI) 目录
最新文章
- [转载]商业智能的三个层次
- mysql (master/slave)复制原理及配置
- 2015 Multi-University Training Contest 5
- spring框架学习(三)junit单元测试
- MySQL5.7 Linux安装流程
- (转)Python开发规范
- Java+Jmeter接口测试
- OEA 中 WPF 树型表格虚拟化设计方案
- cookie 和 session 区别
- python3使用ddt框架进行外部传参
- abp框架 mysql_ABP框架使用Mysql数据库
- nodejs设置镜像源
- 数学符号的读音——那些你总是记不住的数学符号的读音(α,β,γ,δ,ε,λ,ζ,η,θ,ξ,σ,φ,ψ,ω...)
- 程序人生 - 农夫山泉、恒大冰泉、怡宝等矿泉水品牌的产品有哪些区别?
- 全球 40 位 40 岁以下的富豪
- JAVA 实现 名单按姓氏笔画为序排列
- openscad螺栓数据生成2
- 网络统考计算机实机操作,2020年国家开放大学电大考试《计算机应用基础》网络核心课形考网考作业试题及答案(完整版)(42页)-原创力文档...
- Py之pycocotools:pycocotools库的简介、安装、使用方法之详细攻略续篇
- 物理系统之碰撞检测——碰撞器