<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数独求解器的更多相关文章

  1. 编程之美之数独求解器的C++实现方法

    编程之美的第一章的第15节.讲的是构造数独.一開始拿到这个问题的确没有思路, 只是看了书中的介绍之后, 发现原来这个的求解思路和N皇后问题是一致的. 可是不知道为啥,反正一開始确实没有想到这个回溯法. ...

  2. 经典数独游戏+数独求解器—纯C语言实现

    "心常乐数独小游戏"(下面简称"本软件")是一款windows平台下的数独游戏软件. 本软件是开源.免费软件. 本软件使用纯C语言编写,MinGW编译,NSIS ...

  3. VBA调用数独求解器

    我开发了一个用于求解数独的dll文件,只需要双击一下注册表文件,就可以在VBA中调用这个功能了.具体步骤如下: 下载:https://share.weiyun.com/5dpcNqx 找到ExcelS ...

  4. C# 数独求解算法。

    前言 数独是一种有趣的智力游戏,但是部分高难度数独在求解过程中经常出现大量单元格有多个候选数字可以填入,不得不尝试填写某个数字然后继续推导的方法.不幸的是这种方法经常出现填到一半才发现有单元格无数可填 ...

  5. C#简易一元二次求解器

    using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using Sy ...

  6. 自己实现的一款在线Javascript正则表达式测试器——JRE-Parser

    本文最初发布于我的个人博客:http://jerryzou.com/posts/jreparser/ 昨天在看<正则表达式30分钟入门教程>的时候,看到博主自己实现了一个C#写的正则测试器 ...

  7. Maxwell顺态求解器电磁力分析

    文源:技术邻 问题描述:求解一段通有正弦交流电的直导线在某一稳态磁场中的受力情况,并简单验证仿真结果. 模型介绍: 如上几何模型中10mm边长立方体代表永磁体,材料属性为材料库中的NdFe35,修改磁 ...

  8. 线性二次型调节器LQR/LQC算法解析及求解器代码(matlab)

    参考链接:http://120.52.51.14/stanford.edu/class/ee363/lectures/dlqr.pdf 本文参考讲义中的第20页PPT,根据Hamilton-Jacob ...

  9. TRAC-IK机器人运动学求解器

    TRAC-IK和Orocos KDL类似,也是一种基于数值解的机器人运动学求解器,但是在算法层面上进行了很多改进(Specifically, KDL’s convergence algorithms ...

随机推荐

  1. android switch(String)错误:Cannot switch on a value of type String for source level below 1.7

    switch语句的判断条件可以接受int,byte,char,short,不能接受其他类型只有JDK版本1.7以上才可以支持String 设置如下可解决问题:(若没有JDK1.7版,可下载一下安装)菜 ...

  2. 【JAVA 小结】Java关于类与对象的代码

    分别建立2个类class works 和 Person import java.io.*; public class works { public static void main(String[] ...

  3. CSS3魔法堂:CSS3滤镜及Canvas、SVG和IE滤镜替代方案详解[转]

    一.前言    IE特有的滤镜常常作为CSS3各种新特性的降级处理补充,而Adobe转向HTML5后与Chrome合作推出CSS3的Filter特性,因此当前仅Webkit内核的浏览器支持CSS3 F ...

  4. jquery——滚动条插件jscroll.js

    一.效果如下 点击“测试中奖纪录”弹出弹框.弹框中内容超出时显示滚动条. 二.代码部分 1.html结构 <body> <a href="javascript:;" ...

  5. python pyperclip模块的使用

    用途: 复制,粘贴 用法: >>> import pyperclip >>> pyperclip.copy('Hello world!') >>> ...

  6. Eclipse的 JSON Edit插件

    1. Json-Eclipse-Plugin https://github.com/boothen/Json-Eclipse-Plugin 2. 另外一个JSON Edit工具 https://tfe ...

  7. canvas时钟

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  8. Python的高级特性6:使用__slots__真的能省很多内存

    在伯乐在线上看到了这篇文章,用Python的 __slots__ 节省9G内存,于是想测试下,对单个类,用__slots__节省内存效果会不会明显. 看完这个例子后,我们也会明白__slots__是用 ...

  9. iOS:CYLTabBarController【低耦合集成TabBarController】

    导航 与其他自定义TabBarController的区别 集成后的效果 项目结构 使用CYLTabBarController 第一步:使用CocoaPods导入CYLTabBarController ...

  10. 使用spring boot+mybatis+mysql 构建RESTful Service

    开发目标 开发两个RESTful Service Method Url Description GET /article/findAll POST /article/insert 主要使用到的技术 j ...