Tjah, nu kan vi jo prøve og se, om der altid er præcis een løsning !-)
-- hvis der er, så virker denne javascript-baserede ting:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"
http://www.w3.org/TR/html4/loose.dtd"><html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
var talt = 0;
function solve(){
/* var maze = [
[7,8,0, 0,0,5, 9,0,0],
[0,4,0, 2,0,7, 0,3,0],
[0,5,9, 0,0,8, 2,4,0],
[0,2,0, 0,0,9, 3,1,0],
[0,0,7, 3,0,4, 6,0,0],
[0,3,4, 1,0,0, 0,9,0],
[0,6,5, 7,0,0, 8,2,0],
[0,7,0, 9,0,6, 0,5,0],
[0,0,3, 5,0,0, 0,7,6]
];
txt = maze.toString();*/
var maze = new Array();
for(i=0;9>i;i++){
maze[i] = new Array();
for(j=0;9>j;j++){
maze[i][j] = +document.getElementById("celle_" + i + "_" + j).value;
}
}
var p = new Array(),used;
for(i=0;9>i;i++){
p[i] = new Array();
for(j=0;9>j;j++){
used = maze[i][j];
p[i][j] = new Array();
p[i][j][0] = used==0?9:1;
for(k=1;10>k;k++){
p[i][j][k] = used==0 || used==k;
}
}
}
for(i=0;9>i;i++){
for(j=0;9>j;j++){
if(maze[i][j]>0)
p = updatePossibilities(i,j,p,maze);
}
}
var tim = new Date();
var changed = true;
while(changed){
changed = false;
document.getElementById('minSpan').innerHTML = ++talt;
for(i=0;9>i;i++){
for(j=0;9>j;j++){
if(maze[i][j] == 0 && p[i][j][0] == 1){
num = 0;
for(k=1;10>k;k++){
if(num == 0 && p[i][j][k]){
maze[i][j] = k;
changed = true;
}
num += p[i][j][k]?1:0;
}
if(num>1){
//rebuild if errors
alert("Der er fundet fejl i possibilities !-)");
return;
}else
p = updatePossibilities(i,j,p,maze);
}
}
}
}
//alert(maze +"\n"+ txt);
document.getElementById('minSpan').innerHTML = "Løsningstid: " + (new Date().getTime()-tim.getTime()) + " msek.";
for(i=0;9>i;i++){
for(j=0;9>j;j++){
document.getElementById("Tcelle_" + i + "_" + j).innerHTML = maze[i][j];
}
}
}
function updatePossibilities(x,y,p,m){
var boxX = x - x%3;
var boxY = y - y%3;
var num = m[x][y];
for(var i=0; 9>i; i++){
if(p[x][i][num])
p[x][i][0]--;
p[x][i][num] = false;
if(p[i][y][num])
p[i][y][0]--;
p[i][y][num] = false;
}
for(i=0;3>i;i++){
for(var j=0; 3>j; j++){
actX = boxX + i;
actY = boxY + j;
if(actX!=x || actY!=y){
if(p[actX][actY][num])
p[actX][actY][0]--;
p[actX][actY][num] = false;
}
}
}
p[x][y][0] = 1;
return p;
}
</script>
<style type="text/css">
td{text-align:center;width:4em;}
input{text-align:center;}
</style>
<title>Løs Soduko</title>
</head>
<body>
<table border="1">
<tr>
<td><table border="0">
<tr>
<td><input type="text" id="celle_0_0" maxlength="1" size="1" value="7"></td>
<td><input type="text" id="celle_0_1" maxlength="1" size="1" value="8"></td>
<td><input type="text" id="celle_0_2" maxlength="1" size="1" value="0"></td>
</tr>
<tr>
<td><input type="text" id="celle_0_3" maxlength="1" size="1" value="0"></td>
<td><input type="text" id="celle_0_4" maxlength="1" size="1" value="0"></td>
<td><input type="text" id="celle_0_5" maxlength="1" size="1" value="5"></td>
</tr>
<tr>
<td><input type="text" id="celle_0_6" maxlength="1" size="1" value="9"></td>
<td><input type="text" id="celle_0_7" maxlength="1" size="1" value="0"></td>
<td><input type="text" id="celle_0_8" maxlength="1" size="1" value="0"></td>
</tr>
</table></td>
<td><table border="0">
<tr>
<td><input type="text" id="celle_1_0" maxlength="1" size="1" value="0"></td>
<td><input type="text" id="celle_1_1" maxlength="1" size="1" value="4"></td>
<td><input type="text" id="celle_1_2" maxlength="1" size="1" value="0"></td>
</tr>
<tr>
<td><input type="text" id="celle_1_3" maxlength="1" size="1" value="2"></td>
<td><input type="text" id="celle_1_4" maxlength="1" size="1" value="0"></td>
<td><input type="text" id="celle_1_5" maxlength="1" size="1" value="7"></td>
</tr>
<tr>
<td><input type="text" id="celle_1_6" maxlength="1" size="1" value="0"></td>
<td><input type="text" id="celle_1_7" maxlength="1" size="1" value="3"></td>
<td><input type="text" id="celle_1_8" maxlength="1" size="1" value="0"></td>
</tr>
</table></td>
<td><table border="0">
<tr>
<td><input type="text" id="celle_2_0" maxlength="1" size="1" value="0"></td>
<td><input type="text" id="celle_2_1" maxlength="1" size="1" value="5"></td>
<td><input type="text" id="celle_2_2" maxlength="1" size="1" value="9"></td>
</tr>
<tr>
<td><input type="text" id="celle_2_3" maxlength="1" size="1" value="0"></td>
<td><input type="text" id="celle_2_4" maxlength="1" size="1" value="0"></td>
<td><input type="text" id="celle_2_5" maxlength="1" size="1" value="8"></td>
</tr>
<tr>
<td><input type="text" id="celle_2_6" maxlength="1" size="1" value="2"></td>
<td><input type="text" id="celle_2_7" maxlength="1" size="1" value="4"></td>
<td><input type="text" id="celle_2_8" maxlength="1" size="1" value="0"></td>
</tr>
</table></td>
</tr>
<tr>
<td><table border="0">
<tr>
<td><input type="text" id="celle_3_0" maxlength="1" size="1" value="0"></td>
<td><input type="text" id="celle_3_1" maxlength="1" size="1" value="2"></td>
<td><input type="text" id="celle_3_2" maxlength="1" size="1" value="0"></td>
</tr>
<tr>
<td><input type="text" id="celle_3_3" maxlength="1" size="1" value="0"></td>
<td><input type="text" id="celle_3_4" maxlength="1" size="1" value="0"></td>
<td><input type="text" id="celle_3_5" maxlength="1" size="1" value="9"></td>
</tr>
<tr>
<td><input type="text" id="celle_3_6" maxlength="1" size="1" value="3"></td>
<td><input type="text" id="celle_3_7" maxlength="1" size="1" value="1"></td>
<td><input type="text" id="celle_3_8" maxlength="1" size="1" value="0"></td>
</tr>
</table></td>
<td><table border="0">
<tr>
<td><input type="text" id="celle_4_0" maxlength="1" size="1" value="0"></td>
<td><input type="text" id="celle_4_1" maxlength="1" size="1" value="0"></td>
<td><input type="text" id="celle_4_2" maxlength="1" size="1" value="7"></td>
</tr>
<tr>
<td><input type="text" id="celle_4_3" maxlength="1" size="1" value="3"></td>
<td><input type="text" id="celle_4_4" maxlength="1" size="1" value="0"></td>
<td><input type="text" id="celle_4_5" maxlength="1" size="1" value="4"></td>
</tr>
<tr>
<td><input type="text" id="celle_4_6" maxlength="1" size="1" value="6"></td>
<td><input type="text" id="celle_4_7" maxlength="1" size="1" value="0"></td>
<td><input type="text" id="celle_4_8" maxlength="1" size="1" value="0"></td>
</tr>
</table></td>
<td><table border="0">
<tr>
<td><input type="text" id="celle_5_0" maxlength="1" size="1" value="0"></td>
<td><input type="text" id="celle_5_1" maxlength="1" size="1" value="3"></td>
<td><input type="text" id="celle_5_2" maxlength="1" size="1" value="4"></td>
</tr>
<tr>
<td><input type="text" id="celle_5_3" maxlength="1" size="1" value="1"></td>
<td><input type="text" id="celle_5_4" maxlength="1" size="1" value="0"></td>
<td><input type="text" id="celle_5_5" maxlength="1" size="1" value="0"></td>
</tr>
<tr>
<td><input type="text" id="celle_5_6" maxlength="1" size="1" value="0"></td>
<td><input type="text" id="celle_5_7" maxlength="1" size="1" value="9"></td>
<td><input type="text" id="celle_5_8" maxlength="1" size="1" value="0"></td>
</tr>
</table></td>
</tr>
<tr>
<td><table border="0">
<tr>
<td><input type="text" id="celle_6_0" maxlength="1" size="1" value="0"></td>
<td><input type="text" id="celle_6_1" maxlength="1" size="1" value="6"></td>
<td><input type="text" id="celle_6_2" maxlength="1" size="1" value="5"></td>
</tr>
<tr>
<td><input type="text" id="celle_6_3" maxlength="1" size="1" value="7"></td>
<td><input type="text" id="celle_6_4" maxlength="1" size="1" value="0"></td>
<td><input type="text" id="celle_6_5" maxlength="1" size="1" value="0"></td>
</tr>
<tr>
<td><input type="text" id="celle_6_6" maxlength="1" size="1" value="8"></td>
<td><input type="text" id="celle_6_7" maxlength="1" size="1" value="2"></td>
<td><input type="text" id="celle_6_8" maxlength="1" size="1" value="0"></td>
</tr>
</table></td>
<td><table border="0">
<tr>
<td><input type="text" id="celle_7_0" maxlength="1" size="1" value="0"></td>
<td><input type="text" id="celle_7_1" maxlength="1" size="1" value="7"></td>
<td><input type="text" id="celle_7_2" maxlength="1" size="1" value="0"></td>
</tr>
<tr>
<td><input type="text" id="celle_7_3" maxlength="1" size="1" value="9"></td>
<td><input type="text" id="celle_7_4" maxlength="1" size="1" value="0"></td>
<td><input type="text" id="celle_7_5" maxlength="1" size="1" value="6"></td>
</tr>
<tr>
<td><input type="text" id="celle_7_6" maxlength="1" size="1" value="0"></td>
<td><input type="text" id="celle_7_7" maxlength="1" size="1" value="5"></td>
<td><input type="text" id="celle_7_8" maxlength="1" size="1" value="0"></td>
</tr>
</table></td>
<td><table border="0">
<tr>
<td><input type="text" id="celle_8_0" maxlength="1" size="1" value="0"></td>
<td><input type="text" id="celle_8_1" maxlength="1" size="1" value="0"></td>
<td><input type="text" id="celle_8_2" maxlength="1" size="1" value="3"></td>
</tr>
<tr>
<td><input type="text" id="celle_8_3" maxlength="1" size="1" value="5"></td>
<td><input type="text" id="celle_8_4" maxlength="1" size="1" value="0"></td>
<td><input type="text" id="celle_8_5" maxlength="1" size="1" value="0"></td>
</tr>
<tr>
<td><input type="text" id="celle_8_6" maxlength="1" size="1" value="0"></td>
<td><input type="text" id="celle_8_7" maxlength="1" size="1" value="7"></td>
<td><input type="text" id="celle_8_8" maxlength="1" size="1" value="6"></td>
</tr>
</table></td>
</tr>
</table>
<button onclick="solve();return false;">Løs Soduko</button>
<span id="minSpan"></span>
<table border="1">
<tr>
<td><table border="0">
<tr>
<td id="Tcelle_0_0"></td>
<td id="Tcelle_0_1"></td>
<td id="Tcelle_0_2"></td>
</tr>
<tr>
<td id="Tcelle_0_3"></td>
<td id="Tcelle_0_4"></td>
<td id="Tcelle_0_5"></td>
</tr>
<tr>
<td id="Tcelle_0_6"></td>
<td id="Tcelle_0_7"></td>
<td id="Tcelle_0_8"></td>
</tr>
</table></td>
<td><table border="0">
<tr>
<td id="Tcelle_1_0"></td>
<td id="Tcelle_1_1"></td>
<td id="Tcelle_1_2"></td>
</tr>
<tr>
<td id="Tcelle_1_3"></td>
<td id="Tcelle_1_4"></td>
<td id="Tcelle_1_5"></td>
</tr>
<tr>
<td id="Tcelle_1_6"></td>
<td id="Tcelle_1_7"></td>
<td id="Tcelle_1_8"></td>
</tr>
</table></td>
<td><table border="0">
<tr>
<td id="Tcelle_2_0"></td>
<td id="Tcelle_2_1"></td>
<td id="Tcelle_2_2"></td>
</tr>
<tr>
<td id="Tcelle_2_3"></td>
<td id="Tcelle_2_4"></td>
<td id="Tcelle_2_5"></td>
</tr>
<tr>
<td id="Tcelle_2_6"></td>
<td id="Tcelle_2_7"></td>
<td id="Tcelle_2_8"></td>
</tr>
</table></td>
</tr>
<tr>
<td><table border="0">
<tr>
<td id="Tcelle_3_0"></td>
<td id="Tcelle_3_1"></td>
<td id="Tcelle_3_2"></td>
</tr>
<tr>
<td id="Tcelle_3_3"></td>
<td id="Tcelle_3_4"></td>
<td id="Tcelle_3_5"></td>
</tr>
<tr>
<td id="Tcelle_3_6"></td>
<td id="Tcelle_3_7"></td>
<td id="Tcelle_3_8"></td>
</tr>
</table></td>
<td><table border="0">
<tr>
<td id="Tcelle_4_0"></td>
<td id="Tcelle_4_1"></td>
<td id="Tcelle_4_2"></td>
</tr>
<tr>
<td id="Tcelle_4_3"></td>
<td id="Tcelle_4_4"></td>
<td id="Tcelle_4_5"></td>
</tr>
<tr>
<td id="Tcelle_4_6"></td>
<td id="Tcelle_4_7"></td>
<td id="Tcelle_4_8"></td>
</tr>
</table></td>
<td><table border="0">
<tr>
<td id="Tcelle_5_0"></td>
<td id="Tcelle_5_1"></td>
<td id="Tcelle_5_2"></td>
</tr>
<tr>
<td id="Tcelle_5_3"></td>
<td id="Tcelle_5_4"></td>
<td id="Tcelle_5_5"></td>
</tr>
<tr>
<td id="Tcelle_5_6"></td>
<td id="Tcelle_5_7"></td>
<td id="Tcelle_5_8"></td>
</tr>
</table></td>
</tr>
<tr>
<td><table border="0">
<tr>
<td id="Tcelle_6_0"></td>
<td id="Tcelle_6_1"></td>
<td id="Tcelle_6_2"></td>
</tr>
<tr>
<td id="Tcelle_6_3"></td>
<td id="Tcelle_6_4"></td>
<td id="Tcelle_6_5"></td>
</tr>
<tr>
<td id="Tcelle_6_6"></td>
<td id="Tcelle_6_7"></td>
<td id="Tcelle_6_8"></td>
</tr>
</table></td>
<td><table border="0">
<tr>
<td id="Tcelle_7_0"></td>
<td id="Tcelle_7_1"></td>
<td id="Tcelle_7_2"></td>
</tr>
<tr>
<td id="Tcelle_7_3"></td>
<td id="Tcelle_7_4"></td>
<td id="Tcelle_7_5"></td>
</tr>
<tr>
<td id="Tcelle_7_6"></td>
<td id="Tcelle_7_7"></td>
<td id="Tcelle_7_8"></td>
</tr>
</table></td>
<td><table border="0">
<tr>
<td id="Tcelle_8_0"></td>
<td id="Tcelle_8_1"></td>
<td id="Tcelle_8_2"></td>
</tr>
<tr>
<td id="Tcelle_8_3"></td>
<td id="Tcelle_8_4"></td>
<td id="Tcelle_8_5"></td>
</tr>
<tr>
<td id="Tcelle_8_6"></td>
<td id="Tcelle_8_7"></td>
<td id="Tcelle_8_8"></td>
</tr>
</table></td>
</tr>
</table>
</body>
</html>