JavaScript数独求解器
<html> <head> <style type="text/css"> .txt { width: 50; height: 50; background-color: black; color: white; text-align: center; font-family: Consolas; font-size: 40; } .btn { width: 200; height: 60; text-align: center; font-family: 楷体; font-size: 40; color: white; background-color: black; } </style> </head> <h1 align="center">请输入已知的数字</h1> <script type="text/javascript"> init(); var a = new Array(81); var over = false; function run() { if (cin() == false) document.getElementById('re').innerHTML = '输入不合法'; else { over = false; document.getElementById('re').innerHTML = '正在运行'; go(0, 0); if (over) { cout(); document.getElementById('re').innerHTML = '运行结束'; } else document.getElementById('re').innerHTML = '条件太少,没找到答案'; } } function cout() { for (var i = 0; i < 81; i++) { document.getElementById('grid' + i).value = a[i]; } } function cin() { for (var i = 0; i < 81; i++) { a[i] = document.getElementById('grid' + i).value; if (a[i] == undefined || a[i] == '') a[i] = 0; } return true; } function canBe(x, y, v) { for (var i = 0; i < 9; i++) { if (i != x && v == a[i * 9 + y]) return false; else if (i != y && v == a[x * 9 + i]) return false; } var xx=Math.floor(x/3)*3; var yy=Math.floor(y/3)*3; for (var i = xx; i < xx + 3; i++) { for (var j = yy; j < yy + 3; j++) { if (a[i * 9 + j] == v && (i != x || y != j)) return false; } } return true; } function next(x, y) { var z = x * 9 + y + 1; if (z == 81) over = true; else go( Math.floor(z/9), z % 9); } function go(x, y) { if (a[x * 9 + y] == 0) { for (var i = 1; i <= 9; i++) { if (canBe(x, y, i)) { a[x * 9 + y] = i; next(x, y); if (over) return; } } a[x * 9 + y] = 0; } else { next(x, y); } } function clr() { for (var i = 0; i < 81; i++) document.getElementById('grid' + i).value = ''; } function init() { document.write("<table align='center'>"); for (var i = 0; i < 9; i++) { document.write("<tr>"); for (var j = 0; j < 9; j++) { document .write("<td><input type='text' maxlength=1 class='txt' id='grid" + (i * 9 + j) + "'></input></td>"); } document.write("</tr>"); } document.write("</table>"); } </script> <input type="button" value='清空' class='btn' onclick="clr()"></input> <input type="button" value='运行' class='btn' onclick="run()"></input> <h3 id='re'>weidiao</h3> <h3 id='haha'></h3> </html>
JavaScript数独求解器的更多相关文章
- 编程之美之数独求解器的C++实现方法
编程之美的第一章的第15节.讲的是构造数独.一開始拿到这个问题的确没有思路, 只是看了书中的介绍之后, 发现原来这个的求解思路和N皇后问题是一致的. 可是不知道为啥,反正一開始确实没有想到这个回溯法. ...
- 经典数独游戏+数独求解器—纯C语言实现
"心常乐数独小游戏"(下面简称"本软件")是一款windows平台下的数独游戏软件. 本软件是开源.免费软件. 本软件使用纯C语言编写,MinGW编译,NSIS ...
- VBA调用数独求解器
我开发了一个用于求解数独的dll文件,只需要双击一下注册表文件,就可以在VBA中调用这个功能了.具体步骤如下: 下载:https://share.weiyun.com/5dpcNqx 找到ExcelS ...
- C# 数独求解算法。
前言 数独是一种有趣的智力游戏,但是部分高难度数独在求解过程中经常出现大量单元格有多个候选数字可以填入,不得不尝试填写某个数字然后继续推导的方法.不幸的是这种方法经常出现填到一半才发现有单元格无数可填 ...
- C#简易一元二次求解器
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...
- 自己实现的一款在线Javascript正则表达式测试器——JRE-Parser
本文最初发布于我的个人博客:http://jerryzou.com/posts/jreparser/ 昨天在看<正则表达式30分钟入门教程>的时候,看到博主自己实现了一个C#写的正则测试器 ...
- Maxwell顺态求解器电磁力分析
文源:技术邻 问题描述:求解一段通有正弦交流电的直导线在某一稳态磁场中的受力情况,并简单验证仿真结果. 模型介绍: 如上几何模型中10mm边长立方体代表永磁体,材料属性为材料库中的NdFe35,修改磁 ...
- 线性二次型调节器LQR/LQC算法解析及求解器代码(matlab)
参考链接:http://120.52.51.14/stanford.edu/class/ee363/lectures/dlqr.pdf 本文参考讲义中的第20页PPT,根据Hamilton-Jacob ...
- TRAC-IK机器人运动学求解器
TRAC-IK和Orocos KDL类似,也是一种基于数值解的机器人运动学求解器,但是在算法层面上进行了很多改进(Specifically, KDL’s convergence algorithms ...
随机推荐
- linux tomcat 用/etc/init.d/tomcat start启动报错
line 13: [ 0: unary operator expected please use "sudo service tomcat stop|start|restart" ...
- Linux vim编辑命令
yum install -y vim-enhanced 安装vim 命令 一般模式 shift 4 行尾 shift 6 或 0行首 gg 顶部 G 下部 复制 yy 剪切几行 数字 dd p粘贴 ...
- 折半算法的C#实现方式-递归和非递归
这个算法,相信大家都懂,但是不真正的手动写一遍,总觉得不得劲.这不,手动写一遍就是有不一样的效果出现了. 往左折半,还是往右走比较简单,其实这两个算法最关键的是:退出条件 min > max ...
- 【2016-10-14】【坚持学习】【Day5】【策略模式】
今天学了策略模式 例子 一个售票系统,针对不同的用户使用不用的计价方式, 环境类:一个业务场景(电影票累,) 抽象类:计价算法 具体实现类:5折算法,满100减20算法,..... 抽象策略类 abs ...
- Windows 批处理(bat)语法大全
本文是学习bat整理的笔记,由于内容较多,建议结合右侧文章大纲查看. %~dp0[获取当前路径] %~dp0 “d”为Drive的缩写,即为驱动器,磁盘.“p”为Path缩写,即为路径,目录 cd % ...
- Unity自动构建
Jenkins/Hudson Jenkins的前身是Hudson(Sun开发),2010年从Hudson分支出来.由于Sun被Oracle收购,Oracle声称拥有Hudson的商标所有权,Hudso ...
- SecurityError Error 2148 SWF 不能访问本地资源
错误提示: SWF 文件不能被本地访问 不能访问本地 只有仅限于文件系统的 SWF 文件和可信的本地 SWF 文件可以访问本地资源 错误信息: SecurityError: Error #2148: ...
- 在ubuntu14.04上安装编译Android需要的开发包
具体的操作步骤,可在Android官网查看. http://source.android.com/source/initializing.html 首先安装dpkg-dev sudo apt-get ...
- HTML 学习笔记 JavaScript(数据类型)
字符串 数字 布尔 数组 对象 Null Undefined JavaScript 拥有动态类型 JavaScript拥有动态类型 这意味着相同的变量可用作不同的类型: 实例: var x // x ...
- wget 怎么下载https的连接错误: Unable to establish SSL connection
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.4.11.tgz?_ga=1.33040702.1440244624.1 ...