<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. QT学习第1天

    QT学习第一天  坚持住!! 一 Qt概述 1.Qt发展历史 (1)1991年诞生(Haavard Nord/Eirik Chambe-Eng), (2)1994年创立Troll Tech(奇趣科技) ...

  2. Type mismatch: cannot convert from MainFragment to Fragment 报错

    源码: FragmentTransaction mFragmentTranscation = getSupportFragmentManager().beginTransaction(); Fragm ...

  3. 【JAVA小结】字符串比较是否相等

    public class CompareObject1 { public static void main(String[] args) { String str1 = new String(&quo ...

  4. html特殊字符的html,js,css写法汇总

    ⇠  箭头类 符号 UNICODE 符号 UNICODE HTML JS CSS HTML JS CSS ⇠ &#8672 \u21E0 \21E0 ⇢ &#8674 \u21E2 \ ...

  5. jquery对标签属性操作

    jquery中添加属性和删除属性: $("#2args").attr("disabled",'disabled'); $("#2args") ...

  6. MMORPG大型游戏设计与开发(概述)updated

    1.定义 MMORPG,是英文Massive(或Massively)Multiplayer Online Role-PlayingGame的缩写,即大型多人在线角色扮演游戏. 2.技术与知识 在这系列 ...

  7. Caffe CNN特征可视化

    转载请注明出处,楼燚(yì)航的blog,http://www.cnblogs.com/louyihang-loves-baiyan/ 以下部分代码是根据caffe的python接口,从一次forwo ...

  8. selenium如何高亮某元素和操作隐藏的内容

    高亮元素的思路是: 1.找到要高亮的元素 2.对该元素执行js,更改style达到高亮效果. 操作隐藏的内容思路: 1.可以用Actions的moveToElement,使鼠标悬停在触发隐藏内容的元素 ...

  9. Vim插件管理——Vundle

    Vim插件管理--Vundle 都说Vim时程序员写给自己的编辑器,其中的情结可想而知.身为一只程序狗CodingDoge,今天就让我带各位学习Vim的使用. vim因为其庞大而强劲的插件受到无比的推 ...

  10. 详细说说 Google Test Certified 的各级——Level 2,3

    转载请联系作者,谢谢!   No releases with red tests基于Level1搭建的持续集成,持续发布选用的CL(changelist)就可以取自CI系统最后跑通的CL,因为持续集成 ...