aquí hay otra vez un javascript del usuario “Totalmente automático” (muchas gracias!). Se trata de un generador Sudoku, en el cual ustedes mismos podrán elegir el grado de dificultad.
En breve la explicación del juego para todos quienes todavía no lo conocen.
El objetivo del Sodoku es ubicar los números del 1 al 9 tanto verticalmente como también horizontalmente como también dentro de los bloques 3x3 correspondientes de tal manera que en cada fila, en cada columna y en cada bloque esos números respectivamente figuren solo una vez.
Si se ha logrado esto, el Sodoku esta solucionado.
Pues bien, que se diviertan desvanandose los sesos en el Sodoku
Código:
Código:
<!DOCTYPE html>
<html>
<head>
<title>Ejemplo de javascript</title>
<meta charset="UTF-8">
</head>
<body>
<!-- Presentado por javascripts-gratis.de -->
<script type='text/javascript'>
<!--
// (c) Copyright by Totalmente automatico 2007
///////
var estadoSudoku = 1; // Ingresar aqui si el sudoku debe imprimirse completamente (3) o solamente condicionado (1)
///////
// Sry, ni idea de donde tengo el segmento hasta ***... :-|
// --> Google tiene la culpa...
function arrayShuffle(){
var tmp, borde;
for(var i =0; i < this.length; i++)
{
borde = Math.floor(Math.random() * this.length);
tmp = this[i];
this[i] = this[borde];
this[borde] =tmp;
}
}
Array.prototype.shuffle = arrayShuffle;
// ********
function sudoku_reset() {
for (var i = 1; i <= 81; i++) {
document.getElementById('celdaSudoku'+i).value = "";
}
}
function generar_sudoku ()
{
var campos = new Array();
sudoku_reset();
var cola = new Array(1,2,3,4,5,6,7,8,9);
cola.shuffle();
for (var i = 1; i <= 81; i++)
{
campos[i-1] = cola[(i-1)%9];
if (i %9 == 0) { var camino1 = cola[0]; var camino2 = cola[1]; var camino3 = cola[2]; cola.shift(); cola.shift(); cola.shift(); cola[6] = camino1; cola[7] = camino2; cola[8] = camino3; }
if (i %27 == 0) { var camino = cola[0]; cola.shift(); cola[8] = camino; }
}
for (var cantidad = 0; cantidad < 400; cantidad++) // 400 colas sustituidas!
{
if (Math.random() >= 0.333)
{
var betr_cola_1 = parseInt(Math.random() * 9);
if (betr_cola_1 == 0) { if (Math.random() > 0.5) { betr_cola_2 = 1; } else { betr_cola_2 = 2; } }
if (betr_cola_1 == 1) { if (Math.random() > 0.5) { betr_cola_2 = 0; } else { betr_cola_2 = 2; } }
if (betr_cola_1 == 2) { if (Math.random() > 0.5) { betr_cola_2 = 1; } else { betr_cola_2 = 0; } }
if (betr_cola_1 == 3) { if (Math.random() > 0.5) { betr_cola_2 = 4; } else { betr_cola_2 = 5; } }
if (betr_cola_1 == 4) { if (Math.random() > 0.5) { betr_cola_2 = 3; } else { betr_cola_2 = 5; } }
if (betr_cola_1 == 5) { if (Math.random() > 0.5) { betr_cola_2 = 4; } else { betr_cola_2 = 3; } }
if (betr_cola_1 == 6) { if (Math.random() > 0.5) { betr_cola_2 = 7; } else { betr_cola_2 = 8; } }
if (betr_cola_1 == 7) { if (Math.random() > 0.5) { betr_cola_2 = 6; } else { betr_cola_2 = 8; } }
if (betr_cola_1 == 8) { if (Math.random() > 0.5) { betr_cola_2 = 7; } else { betr_cola_2 = 6; } }
var entre = new Array();
for (var i = 0; i <= 8; i++) { entre[i] = campos[betr_cola_1 * 9 + i]; }
for (var i = 0; i <= 8; i++) { campos[betr_cola_1 * 9 + i] = campos[betr_cola_2 * 9 + i]; }
for (var i = 0; i <= 8; i++) { campos[betr_cola_2 * 9 + i] = entre[i]; }
}
else if (Math.random() >= 0.666)
{
var betr_columna_1 = parseInt(Math.random() * 9);
if (betr_columna_1 == 0) { if (Math.random() > 0.5) { betr_columna_2 = 1; } else { betr_columna_2 = 2; } }
if (betr_columna_1 == 1) { if (Math.random() > 0.5) { betr_columna_2 = 0; } else { betr_columna_2 = 2; } }
if (betr_columna_1 == 2) { if (Math.random() > 0.5) { betr_columna_2 = 1; } else { betr_columna_2 = 0; } }
if (betr_columna_1 == 3) { if (Math.random() > 0.5) { betr_columna_2 = 4; } else { betr_columna_2 = 5; } }
if (betr_columna_1 == 4) { if (Math.random() > 0.5) { betr_columna_2 = 3; } else { betr_columna_2 = 5; } }
if (betr_columna_1 == 5) { if (Math.random() > 0.5) { betr_columna_2 = 4; } else { betr_columna_2 = 3; } }
if (betr_columna_1 == 6) { if (Math.random() > 0.5) { betr_columna_2 = 7; } else { betr_columna_2 = 8; } }
if (betr_columna_1 == 7) { if (Math.random() > 0.5) { betr_columna_2 = 6; } else { betr_columna_2 = 8; } }
if (betr_columna_1 == 8) { if (Math.random() > 0.5) { betr_columna_2 = 7; } else { betr_columna_2 = 6; } }
var entre = new Array();
for (var i = 0; i <= 8; i++) { entre[i] = campos[betr_columna_1 + i * 9]; }
for (var i = 0; i <= 8; i++) { campos[betr_columna_1 + i * 9] = campos[betr_columna_2 + i * 9]; }
for (var i = 0; i <= 8; i++) { campos[betr_columna_2 + i * 9] = entre[i]; }
}
else
{
var betr_cola_bloque_1 = parseInt(Math.random() * 3);
if (betr_cola_bloque_1 == 0) { if (Math.random() > 0.5) { betr_cola_bloque_2 = 1; } else { betr_cola_bloque_2 = 2; } }
if (betr_cola_bloque_1 == 1) { if (Math.random() > 0.5) { betr_cola_bloque_2 = 0; } else { betr_cola_bloque_2 = 2; } }
if (betr_cola_bloque_1 == 2) { if (Math.random() > 0.5) { betr_cola_bloque_2 = 0; } else { betr_cola_bloque_2 = 1; } }
var entre = new Array();
for (var i = 0; i <= 26; i++) { entre[i] = campos[betr_cola_bloque_1 * 27 + i]; }
for (var i = 0; i <= 26; i++) { campos[betr_cola_bloque_1 * 27 + i] = campos[betr_cola_bloque_2 * 27 + i]; }
for (var i = 0; i <= 26; i++) { campos[betr_cola_bloque_2 * 27 + i] = entre[i]; }
}
}
if (document.getElementById('difiSudoku0').checked == true) { number = 36; }
if (document.getElementById('difiSudoku1').checked == true) { number = 30; }
if (document.getElementById('difiSudoku2').checked == true) { number = 26; }
if (document.getElementById('difiSudoku3').checked == true) { number = 22; }
var cuales = new Array(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81);
cuales.shuffle();
estado = document.getElementById('estadoSudoku').value;
for (var i = 0; i < number*estado; i++)
{
for (var k = 1; k <= 81; k++) {
if (cuales[0] == k) document.getElementById('celdaSudoku'+k).value = campos[k-1];
}
cuales.shift();
}
for (var i = 1; i <= 81; i++) {
document.getElementById('celdaSudoku'+i+'_hid').value = campos[i-1];
}
}
function resolver ()
{
for (var i = 1; i <= 81; i++) {
document.getElementById('celdaSudoku'+i).value = document.getElementById('celdaSudoku'+i+'_hid').value;
}
}
function sudokuInit() {
document.write('<input type="hidden" name="estadoSudoku" id="estadoSudoku" value="1" />');
document.write('<h3 style="display: inline;">Tu propio Sudoku</h3>');
document.write('<br />');
document.write('<fieldset>');
document.write('<legend>Generador Sudoku</legend>');
document.write('<br />');
document.getElementById('estadoSudoku').value = 1;
document.write("<style type='text/css'>");
document.write(".input { border: 1px solid #000000; width: 25px; height: 25px; text-align: center; font-family: Arial; font-weight: bold; }");
document.write("fieldset { width: 50%; padding: 10px; float: center; margin-left: auto; margin-right: auto; }");
document.write("</style>");
for (var j = 1; j <= 1; j++)
{
for (var i = 1; i <= 81; i++)
{
document.write("<input type='text' name='celdaSudoku"+i+"' id='celdaSudoku"+i+"' maxlength='1' style='overflow: hidden' class='input'> ");
if (i %3 == 0){ document.write(" "); }
if ( (i %9 == 0) && (i != 81) ){ document.write("<br />"); }
if (i %27 == 0) { document.write("<br />"); }
}
}
for (var i = 1; i <= 81; i++)
{
document.write("<input type='hidden' name='celdaSudoku"+i+"_hid' id='celdaSudoku"+i+"_hid' />");
}
document.write('<input type="radio" name="difi" id="difiSudoku0" checked="checked" /> <b>*</b> ');
document.write('<input type="radio" name="difi" id="difiSudoku1" /> <b>**</b> ');
document.write('<input type="radio" name="difi" id="difiSudoku2" /> <b>***</b> ');
document.write('<input type="radio" name="difi" id="difiSudoku3" /> <b>****</b>');
document.write('<br /><br />');
document.write('<button onclick="generar_sudoku();">Generar</button>');
document.write(' ');
document.write('<button onclick="sudoku_reset();">Desechar</button>');
document.write(' ');
document.write('<button onclick="resolver();">Resolver</button>');
document.write('</fieldset>');
}
//-->
</script>
<script type="text/javascript">sudokuInit();</script>
<!-- Presentado por javascripts-gratis.de -->
</body>
</html>
Página web:
https://drive.google.com/open?id=1LKzs8_a1B0JiVA76r3RjjUT24Nqd3RBr
Autor: Totalmente automático
Saludos