JS实现判断有效的数独算法示例


Posted in Javascript onFebruary 25, 2019

本文实例讲述了JS实现判断有效的数独算法。分享给大家供大家参考,具体如下:

判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。

1.数字 1-9 在每一行只能出现一次。
2.数字 1-9 在每一列只能出现一次。
3.数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。

JS实现判断有效的数独算法示例

数独部分空格内已填入了数字,空白格用 ‘.' 表示。

示例 1:

输入:

[
["5","3",".",".","7",".",".",".","."],
["6",".",".","1","9","5",".",".","."],
[".","9","8",".",".",".",".","6","."],
["8",".",".",".","6",".",".",".","3"],
["4",".",".","8",".","3",".",".","1"],
["7",".",".",".","2",".",".",".","6"],
[".","6",".",".",".",".","2","8","."],
[".",".",".","4","1","9",".",".","5"],
[".",".",".",".","8",".",".","7","9"]
]

输出: true

示例 2:

输入:

[
["8","3",".",".","7",".",".",".","."],
["6",".",".","1","9","5",".",".","."],
[".","9","8",".",".",".",".","6","."],
["8",".",".",".","6",".",".",".","3"],
["4",".",".","8",".","3",".",".","1"],
["7",".",".",".","2",".",".",".","6"],
[".","6",".",".",".",".","2","8","."],
[".",".",".","4","1","9",".",".","5"],
[".",".",".",".","8",".",".","7","9"]
]

输出: false

解释: 除了第一行的第一个数字从 5 改为 8 以外,空格内其他数字均与 示例1 相同。

但由于位于左上角的 3x3 宫内有两个 8 存在, 因此这个数独是无效的。

说明:

1.一个有效的数独(部分已被填充)不一定是可解的。
2.只需要根据以上规则,验证已经填入的数字是否有效即可。
3.给定数独序列只包含数字 1-9 和字符 ‘.' 。
4.给定数独永远是 9x9 形式的。

<script>
var isValidSudoku = function(board) {
 const boxes = [{}, {}, {}, {}, {}, {}, {}, {}, {}];
 const cols = [{}, {}, {}, {}, {}, {}, {}, {}, {}];
 const rows = [{}, {}, {}, {}, {}, {}, {}, {}, {}];
 let test = [{}, {}, {}, {}, {}, {}, {}, {}, {}];
 for (let i = 0; i < 9; i++) {
  for (let j = 0; j < 9; j++) {
   const digit = board[i][j];
   if (digit !== '.') {
    const k = Math.floor(j / 3) + (Math.floor(i / 3) * 3);
    if (boxes[k][digit] || cols[j][digit] || rows[i][digit]) {
     return false;
    }
    boxes[k][digit] = cols[j][digit] = rows[i][digit] = true;
   }
  }
 }
 return true;
};
const board = [
 ["5","3",".",".","7",".",".",".","."],
 ["6",".",".","1","9","5",".",".","."],
 [".","9","8",".",".",".",".","6","."],
 ["8",".",".",".","6",".",".",".","3"],
 ["4",".",".","8",".","3",".",".","1"],
 ["7",".",".",".","2",".",".",".","6"],
 [".","6",".",".",".",".","2","8","."],
 [".",".",".","4","1","9",".",".","5"],
 [".",".",".",".","8",".",".","7","9"]
]
console.log(isValidSudoku(board))
</script>

使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码,可得如下运行结果:

JS实现判断有效的数独算法示例

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
对之前写的jquery分页做下升级
Jun 19 Javascript
JQuery表单验证插件EasyValidator用法分析
Nov 15 Javascript
JavaScript获取文本框内选中文本的方法
Feb 20 Javascript
关于Javascript中document.cookie的使用
Mar 08 Javascript
Canvas放置反弹效果随机图形(实例)
Aug 17 Javascript
在vue项目创建的后初始化首次使用stylus安装方法分享
Jan 25 Javascript
vuex进阶知识点巩固
May 20 Javascript
angular.js实现列表orderby排序的方法
Oct 02 Javascript
Vue入门学习笔记【基本概念、对象、过滤器、指令等】
Apr 13 Javascript
微信小程序实现滑动翻页效果(完整代码)
Dec 06 Javascript
浅谈vue中$event理解和框架中在包含默认值外传参
Aug 07 Javascript
vite2.0+vue3移动端项目实战详解
Mar 03 Vue.js
js实现通过开始结束控制的计时器
Feb 25 #Javascript
js实现倒计时器自定义时间和暂停
Feb 25 #Javascript
JS module的导出和导入的实现代码
Feb 25 #Javascript
js实现多个倒计时并行 js拼团倒计时
Feb 25 #Javascript
js实现网页同时进行多个倒计时功能
Feb 25 #Javascript
js实现一个页面多个倒计时的3种方法
Feb 25 #Javascript
Vue自定义指令上报Google Analytics事件统计的方法
Feb 25 #Javascript
You might like
在Yii2中使用Pjax导致Yii2内联脚本载入失败的原因分析
2016/03/06 PHP
Laravel下生成验证码的类
2017/11/15 PHP
实例介绍PHP删除数组中的重复元素
2019/03/03 PHP
JavaScript性能优化 创建文档碎片(document.createDocumentFragment)
2010/07/13 Javascript
Javascript计算时间差的函数分享
2011/07/04 Javascript
ExtJS4如何给同一个formpanel不同的url
2014/05/02 Javascript
浅谈JSON和JSONP区别及jQuery的ajax jsonp的使用
2014/11/23 Javascript
JavaScript中的console.profile()函数详细介绍
2014/12/29 Javascript
jQuery scrollFix滚动定位插件
2015/04/01 Javascript
jQuery判断浏览器并动态调整select宽度的方法
2016/03/02 Javascript
Javascript的表单与验证-非空验证
2016/03/18 Javascript
jquery判断input值不为空的方法
2016/06/05 Javascript
浅谈时钟的生成(js手写简洁代码)
2016/08/20 Javascript
细说webpack源码之compile流程-rules参数处理技巧(2)
2017/12/26 Javascript
解决bootstrap模态框数据缓存的问题方法
2018/08/10 Javascript
更强大的vue ssr实现预取数据的方式
2019/07/19 Javascript
layui数据表格跨行自动合并的例子
2019/09/02 Javascript
关于Node.js中频繁修改代码重启服务器的问题
2020/10/15 Javascript
Vue实现随机验证码功能
2020/12/29 Vue.js
python迭代器的使用方法实例
2013/11/21 Python
Python中的time模块与datetime模块用法总结
2016/06/30 Python
解决pip install xxx报错SyntaxError: invalid syntax的问题
2018/11/30 Python
Python基于内置函数type创建新类型
2020/10/22 Python
如何在 Matplotlib 中更改绘图背景的实现
2020/11/26 Python
Django2.1.7 查询数据返回json格式的实现
2020/12/29 Python
解决pytorch 数据类型报错的问题
2021/03/03 Python
设计师珠宝:Ylang 23
2018/05/11 全球购物
儿科护士自我鉴定
2013/10/14 职场文书
酒店工作职员求职简历的自我评价
2013/10/23 职场文书
美发活动策划书
2014/01/14 职场文书
音乐教学反思
2014/02/02 职场文书
文秘班元旦晚会活动策划方案
2014/08/28 职场文书
python 利用 PIL 将数组值转成图片的实现
2021/04/12 Python
MySQL COUNT函数的使用与优化
2021/05/10 MySQL
Spring Data JPA的Audit功能审计数据库的变更
2021/06/26 Java/Android
vue3种table表格选项个数的控制方法
2022/04/14 Vue.js