elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  javascript - Generador Sudoku
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: javascript - Generador Sudoku  (Leído 2,533 veces)
TickTack


Desconectado Desconectado

Mensajes: 434


CipherX


Ver Perfil
javascript - Generador Sudoku
« en: 3 Enero 2020, 19:39 pm »

Hola a todos,

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


En línea

@XSStringManolo
Hacker/Programador
Colaborador
***
Desconectado Desconectado

Mensajes: 2.399


Turn off the red ligth


Ver Perfil WWW
Re: javascript - Generador Sudoku
« Respuesta #1 en: 4 Enero 2020, 16:22 pm »

Eres o tienes permiso del autor/propietario para compartir el código? Pone que tiene copyrigth, y aunque no lo ponga si no tienes una licencia emitida por el autor que diga exactamente lo contrario no tienes autorización para copiar el trabajo de otros ya que les ampara la propiedad intelectual. De igual forma que no puedes copiar una canción que escuches en una tienda de discos e ir de DJ pinchándola por ahí.
Sí puedes compartir el link al sitio. Eso si es legal.

En caso de publicar código aquí utiliza las etiquetas Geshi. Añade code=javascript antes del código y /code al final. Con corchetes. Si seleccionas todo el código y a la derecha pinchas en Código Geshi puedes añadir las etiquetas javascript para que el código se vea coloreado. Puedes darle a citar a este mensaje para ver las etiquetas que utilizo en el siguiente ejemplo:

Código
  1. [code=javascript]<script>
  2. var objeto = new Object();
  3. objeto.ejemplo = "Ejemplo Del Uso de etiquetas";
  4. document.getElementsByTagName("body")[0].innerHTML = objeto.ejemplo;
  5. alert(objeto.ejemplo);
  6. if( confirm("Borrar objeto?") ) delete objeto;
  7. </script>
[/code]

Puedes editar tus mensajes en el botón modificar.


« Última modificación: 4 Enero 2020, 16:26 pm por @?0!,5^34 » En línea

Mi perfil de patrocinadores de GitHub está activo! Puedes patrocinarme para apoyar mi trabajo de código abierto 💖

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Sudoku.. « 1 2 »
Programación Visual Basic
loco! 16 8,189 Último mensaje 3 Junio 2006, 13:40 pm
por karmany
Sudoku « 1 2 »
Programación C/C++
Jaua10 14 6,281 Último mensaje 24 Noviembre 2014, 05:23 am
por Jaua10
Sudoku
Programación C/C++
Jorge1452 1 1,799 Último mensaje 4 Diciembre 2014, 15:19 pm
por _Enko
[Aporte]Codigo Fuente De Generador de Sodukos en javascript
Desarrollo Web
Flamer 2 3,439 Último mensaje 28 Febrero 2015, 23:44 pm
por Flamer
sudoku
Programación C/C++
cesar2015 3 2,222 Último mensaje 8 Noviembre 2015, 21:04 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines