Soy un poco principiante con eso del javascript, aunque no se aleja mucho de php, pero me duele la cabeza con tansolo ver un codigo en javascript. Me ayudaria mucho que alguien me pudiera explicar un poco el que dejo mas abajo. Se de que sirve, crea sudokus, pero me pierso muy al principio. Gracias!
Código:
var sud=new Array(9);
for(var i = 0; i < 9; i++){
sud[i] = new Array(9);
}
var aux=new Array(9);
for(var i = 0; i < 9; i++){
aux[i] = new Array(9);
}
function generarSudoku(){
for(var i = 0; i < 9; i++){
for(var j = 0; j < 9; j++){
if(Math.random()*10 > 5){ // Si cambias el 5 es decir lo incrementas es mas dificil y si lo disminuyes mas f??cil
rellenarCelda(i , j);
}else{
sud[i][j] = "0";
}
}
}
for(var i = 0; i < 9; i++){
switch(i){
case 0: case 3: case 6:
var cas = 0;
var k = 0;
var i2 = i;
while(cas < 3){
for(var j = 0; j < 3; j++){
aux[i2][j] = sud[i][k];
k++;
}
cas++;
i2++;
}
break;
case 1: case 4: case 7:
var cas = 0;
var k = 0;
var i2 = i-1;
while(cas < 3){
for(var j = 3; j < 6; j++){
aux[i2][j] = sud[i][k];
k++;
}
cas++;
i2++;
}
break;
case 2: case 5: case 8:
var cas = 0;
var k = 0;
var i2 = i-2;
while(cas < 3){
for(var j = 6; j < 9; j++){
aux[i2][j] = sud[i][k];
k++;
}
cas++;
i2++;
}
break;
default:
alert('Error');
break;
}
}
for(var i = 0; i < 9; i++){
for(var j = 0; j < 9; j++){
if(aux[i][j] != 0){
limpiarSudoku(i,j);
}else{
aux[i][j] = '-';
}
}
}
}
function rellenarCelda(i , j){
var num = parseInt((Math.random()*9)+1);
if(comprobarCasilla(num,i,j) == false){
sud[i][j] = "0";
}else{
sud[i][j] = num;
}
}
function limpiarSudoku(i , j){
for(var k = 0; k < 9; k++){
if(aux[i][k] == aux[i][j] && k != j){
aux[i][k]="-";
}
}
for(var k = 0; k < 9; k++){
if(aux[k][j] == aux[i][j] && k != i){
aux[k][j]="-";
}
}
}
function comprobarCasilla(num,i,j){
for(var k = 0; k < 9; k++){
if(sud[i][k] == num){
return false;
}
}
return true;
}
function imprimirSudoku(){
document.write("<br>");
for(var i = 0; i < 9; i++){
for(var j = 0; j < 9; j++){
document.write(aux[i][j]+" ");
}
document.write("<br>");
}
}
generarSudoku();
imprimirSudoku();
Gracias po la ayuda!