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 相关文章推荐
自适应高度框架 ----属个人收藏内容
Jan 22 Javascript
javascript下对于事件、事件流、事件触发的顺序随便说说
Jul 17 Javascript
js 获取、清空input type=&quot;file&quot;的值(示例代码)
Dec 24 Javascript
jquery的clone方法应用于textarea和select的bug修复
Jun 26 Javascript
初步了解javascript面向对象
Nov 09 Javascript
Bootstrap每天必学之工具提示(Tooltip)插件
Apr 26 Javascript
如何判断Javascript对象是否存在的简单实例
May 18 Javascript
js removeChild 方法深入理解
Aug 16 Javascript
Js中async/await的执行顺序详解
Sep 22 Javascript
微信小程序实现动态列表项的顺序加载动画
Jul 25 Javascript
layui table 列宽百分比显示的实现方法
Sep 28 Javascript
小程序使用分包的示例代码
Mar 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
[原创]来自ImageSee官方 JavaScript图片浏览器
2008/01/16 Javascript
让GoogleCode的SVN下的HTML文件在FireFox下正常显示.
2009/05/25 Javascript
用javascript作一个通用向导说明
2011/08/30 Javascript
jquery的map与get方法详解
2013/11/04 Javascript
JavaScript获取table中某一列的值的方法
2014/05/06 Javascript
js实现局部页面打印预览原理及示例代码
2014/07/03 Javascript
jQuery中:disabled选择器用法实例
2015/01/04 Javascript
JavaScript实现的字符串replaceAll函数代码分享
2015/04/02 Javascript
关于JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法
2016/06/30 Javascript
jQuery之动画效果大全
2016/11/09 Javascript
BootStrap 弹出层代码
2017/02/09 Javascript
jquery请求servlet实现ajax异步请求的示例
2017/06/03 jQuery
JavaScript代理模式原理与用法实例详解
2020/03/10 Javascript
vue实现购物车功能(商品分类)
2020/04/20 Javascript
VueCli4项目配置反向代理proxy的方法步骤
2020/05/17 Javascript
解决vue组件没显示,没起作用,没报错,但该显示的组件没显示问题
2020/09/02 Javascript
Python实现计算文件夹下.h和.cpp文件的总行数
2015/04/23 Python
Python科学计算之Pandas详解
2017/01/15 Python
python pandas实现excel转为html格式的方法
2018/10/23 Python
python安装scipy的方法步骤
2019/06/26 Python
django使用haystack调用Elasticsearch实现索引搜索
2019/07/24 Python
wxPython+Matplotlib绘制折线图表
2019/11/19 Python
使用python 将图片复制到系统剪贴中
2019/12/13 Python
pandas 数据类型转换的实现
2020/12/29 Python
boostrap modal 闪现问题的解决方法
2020/09/01 HTML / CSS
YOOX美国官方网站:全球著名的多品牌时尚网络概念店
2016/09/11 全球购物
工程现场管理求职自荐信
2013/10/02 职场文书
白酒业务员岗位职责
2013/12/27 职场文书
优良学风班申请材料
2014/02/13 职场文书
劳动竞赛活动方案
2014/02/20 职场文书
社区党员公开承诺书
2014/08/30 职场文书
九九重阳节标语
2014/10/07 职场文书
2015年清明节网上祭英烈留言寄语
2015/03/04 职场文书
廉洁自律承诺书范文
2015/04/28 职场文书
关于迟到的检讨书
2015/05/06 职场文书
python实现双向链表原理
2022/05/25 Python