Código:
Gracias po la ayuda! 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();