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 相关文章推荐
asp.net下使用jquery 的ajax+WebService+json 实现无刷新取后台值的实现代码
Sep 19 Javascript
关于跨站脚本攻击问题
Dec 22 Javascript
jquery.bgiframe.js在IE9下提示INVALID_CHARACTER_ERR错误
Jan 11 Javascript
jQuery性能优化28条建议你值得借鉴
Feb 16 Javascript
浅谈document.write()输出样式
May 07 Javascript
TypeScript 学习笔记之基本类型
Jun 19 Javascript
以WordPress为例讲解jQuery美化页面Title的方法
May 23 Javascript
详解Vuejs2.0 如何利用proxyTable实现跨域请求
Aug 03 Javascript
vue.js在标签属性中插入变量参数的方法
Mar 06 Javascript
浅谈Node.js 中间件模式
Jun 12 Javascript
Element Rate 评分的使用方法
Jul 27 Javascript
JS实现数组去重的11种方法总结
Apr 04 Javascript
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
PHP调用MySQL的存储过程的实现代码
2008/08/12 PHP
php提交过来的数据生成为txt文件
2016/04/28 PHP
php基于PDO连接MSSQL示例DEMO
2016/07/13 PHP
php数组实现根据某个键值将相同键值合并生成新二维数组的方法
2017/04/26 PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
2018/12/07 PHP
关于Blog顶部的滚动导航条代码
2006/09/25 Javascript
js 判断浏览器类型 去全角、半角空格 自动关闭当前窗口
2009/04/10 Javascript
通过继承IHttpHandle实现JS插件的组织与管理
2010/07/13 Javascript
基于jQuery的实现简单的分页控件
2010/10/10 Javascript
js(JavaScript)实现TAB标签切换效果的简单实例
2014/02/26 Javascript
解决Jquery鼠标经过不停滑动的问题
2014/03/03 Javascript
jquery实现表单验证简单实例演示
2015/11/23 Javascript
一道JS前端闭包面试题解析
2015/12/25 Javascript
jQuery解决$符号命名冲突
2016/06/18 Javascript
在JSP中如何实现MD5加密的方法
2016/11/02 Javascript
获取JavaScript异步函数的返回值
2016/12/21 Javascript
JS判断鼠标进入容器的方向与window.open新窗口被拦截的问题
2016/12/23 Javascript
JS异步文件上传(兼容IE8+)
2017/04/02 Javascript
JS中‘hello’与new String(‘hello’)引出的问题详解
2018/08/14 Javascript
微信小程序使用swiper组件实现层叠轮播图
2018/11/04 Javascript
js中Generator函数的深入讲解
2019/04/07 Javascript
Vue 实现html中根据类型显示内容
2019/10/28 Javascript
python 排序算法总结及实例详解
2016/09/28 Python
Python数据分析之如何利用pandas查询数据示例代码
2017/09/01 Python
基于python(urlparse)模板的使用方法总结
2017/10/13 Python
PyQt5每天必学之弹出消息框
2018/04/19 Python
Python使用修饰器进行异常日志记录操作示例
2019/03/19 Python
在python shell中运行python文件的实现
2019/12/21 Python
使用Html5 Stream开发实时监控系统
2020/06/02 HTML / CSS
Canvas 帧动画吃苹果小游戏
2020/08/05 HTML / CSS
俄罗斯品牌服装在线商店:VIPAVENUE
2020/08/10 全球购物
大专毕业生自我鉴定
2013/11/21 职场文书
环境科学专业个人求职的自我评价
2013/11/28 职场文书
个人职业生涯规划书1500字
2013/12/31 职场文书
整改落实自查报告
2014/11/05 职场文书
python编程实现清理微信重复缓存文件
2021/11/01 Python