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 相关文章推荐
aspx中利用js实现确认删除代码
Jul 22 Javascript
javascript eval(func())使用示例
Dec 05 Javascript
AngularJS模块管理问题的非常规处理方法
Apr 29 Javascript
限制文本框只能输入数字||只能是数字和小数点||只能是整数和浮点数
May 27 Javascript
JSONP原理及简单实现
Jun 08 Javascript
AngularJS框架中的双向数据绑定机制详解【减少需要重复的开发代码量】
Jan 19 Javascript
Vue单文件组件的如何使用方式介绍
Jul 28 Javascript
JS如何实现在页面上快速定位(锚点跳转问题)
Aug 14 Javascript
关于vue.extend和vue.component的区别浅析
Aug 16 Javascript
基于 Vue 的 Electron 项目搭建过程图文详解
Jul 22 Javascript
Element Collapse 折叠面板的使用方法
Jul 26 Javascript
解决VUE项目localhost端口服务器拒绝连接,只能用127.0.0.1的问题
Aug 14 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
2020显卡排行榜天梯图 显卡天梯图2020年3月最新版
2020/04/02 数码科技
德生H-501的评价与改造
2021/03/02 无线电
jQuery 1.2.x 升? 1.3.x 注意事项
2009/05/06 Javascript
js如何获取file控件的完整路径具体实现代码
2013/05/15 Javascript
jquery 隐藏与显示tr标签示例代码
2014/06/06 Javascript
基于slideout.js实现移动端侧边栏滑动特效
2016/11/28 Javascript
浅谈jQuery中事情的动态绑定
2017/02/12 Javascript
写jQuery插件时的注意点
2017/02/20 Javascript
巧用weui.topTips验证数据的实例
2017/04/17 Javascript
webpack学习笔记之优化缓存、合并、懒加载
2017/08/24 Javascript
AngularJS模糊查询功能实现代码(过滤内容下拉菜单排序过滤敏感字符验证判断后添加表格信息)
2017/10/24 Javascript
解决linux下node.js全局模块找不到的问题
2018/05/15 Javascript
echarts实现地图定时切换散点与多图表级联联动详解
2018/08/07 Javascript
JS实现倒序输出的几种常用方法示例
2019/04/13 Javascript
JS使用cookie保存用户登录信息操作示例
2019/05/30 Javascript
JS删除对象中某一属性案例详解
2020/09/08 Javascript
Python读取Excel的方法实例分析
2015/07/11 Python
python2 与 python3 实现共存的方法
2018/07/12 Python
Python+selenium点击网页上指定坐标的实例
2019/07/05 Python
Python Pandas对缺失值的处理方法
2019/09/27 Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
2020/02/28 Python
解决Python3.7.0 SSL低版本导致Pip无法使用问题
2020/09/03 Python
python GUI计算器的实现
2020/10/09 Python
python接口自动化框架实战
2020/12/23 Python
详解python 条件语句和while循环的实例代码
2020/12/28 Python
35款精致的 CSS3 和 HTML5 网页模板 推荐
2012/08/03 HTML / CSS
10种CSS3实现的loading动画,挑一个走吧?
2020/11/16 HTML / CSS
英国最大的宠物商店:Pets at Home
2019/04/17 全球购物
仓管员岗位职责范文
2013/11/08 职场文书
面试后的感谢信范文
2014/02/01 职场文书
个人投资计划书
2014/05/01 职场文书
关于学习的决心书
2015/02/05 职场文书
5.12护士节活动总结
2015/02/10 职场文书
银行资信证明
2015/06/17 职场文书
排球赛新闻稿
2015/07/17 职场文书
python超详细实现完整学生成绩管理系统
2022/03/17 Python