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 相关文章推荐
广告切换效果(缓动切换)
May 27 Javascript
suggestion开发小结以及对键盘事件的总结(针对中文输入法状态)
Dec 20 Javascript
JavaScript学习笔记之JS函数
Jan 22 Javascript
Express实现前端后端通信上传图片之存储数据库(mysql)傻瓜式教程(一)
Dec 10 Javascript
原生JavaScript实现动态省市县三级联动下拉框菜单实例代码
Feb 03 Javascript
jQuery中选择器的基础使用教程
May 23 Javascript
最全的Javascript编码规范(推荐)
Jun 22 Javascript
微信小程序 loading(加载中提示框)实例
Oct 28 Javascript
bootstrap table表格插件使用详解
May 08 Javascript
Vue.js更改调试地址端口号的实例
Sep 19 Javascript
vue 使用axios 数据请求第三方插件的使用教程详解
Jul 05 Javascript
vue实现用户长时间不操作自动退出登录功能的实现代码
Jul 23 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
浅谈电磁辐射对健康的影响
2021/03/01 无线电
php实现天干地支计算器示例
2014/03/14 PHP
PHP向浏览器输出内容的4个函数总结
2014/11/17 PHP
优化WordPress的Google字体以加速国内服务器上的运行
2015/11/24 PHP
php获取远程图片并下载保存到本地的方法分析
2016/10/08 PHP
调用js时ie6和ie7,ff的区别
2009/08/19 Javascript
JQuery AJAX提交中文乱码的解决方案
2010/07/02 Javascript
jquery子元素过滤选择器使用示例
2013/06/24 Javascript
可自己添加html的伪弹出框实现代码
2013/09/08 Javascript
利用javascript实现全部删或清空所选的操作
2014/05/27 Javascript
什么是Node.js?Node.js详细介绍
2014/06/01 Javascript
使用jQuery在移动页面上添加按钮和给按钮添加图标
2015/12/04 Javascript
使用JQuery 加载页面时调用JS的实现方法
2016/05/30 Javascript
jQuery Easyui学习教程之实现datagrid在没有数据时显示相关提示内容
2016/07/09 Javascript
JavaScript中数据类型转换总结
2016/12/25 Javascript
详解react-webpack2-热模块替换[HMR]
2017/08/03 Javascript
vue中如何使用ztree
2018/02/06 Javascript
element-ui upload组件多文件上传的示例代码
2018/10/17 Javascript
JavaScript(js)处理的HTML事件、键盘事件、鼠标事件简单示例
2019/11/19 Javascript
vscode+gulp轻松开发小程序的完整步骤
2020/10/18 Javascript
vue 使用localstorage实现面包屑的操作
2020/11/16 Javascript
9种python web 程序的部署方式小结
2014/06/30 Python
Python操作MongoDB数据库PyMongo库使用方法
2015/04/27 Python
python中字典(Dictionary)用法实例详解
2015/05/30 Python
Python学习小技巧之利用字典的默认行为
2017/05/20 Python
python pygame模块编写飞机大战
2018/11/20 Python
python异步存储数据详解
2019/03/19 Python
PyQt5 closeEvent关闭事件退出提示框原理解析
2020/01/08 Python
css3 transform及原生js实现鼠标拖动3D立方体旋转
2016/06/20 HTML / CSS
浅谈关于html5中图片抛物线运动的一些心得
2018/01/09 HTML / CSS
优衣库英国官网:UNIQLO英国
2016/12/25 全球购物
介绍一下Ruby的多线程处理
2013/02/01 面试题
计算机专业推荐信范文
2013/11/20 职场文书
人事专员职责
2014/02/22 职场文书
公证委托书标准格式
2014/09/11 职场文书
世界各国短波电台对东亚播送时间频率表(SW)
2021/06/28 无线电