codice:
window.onload = function (){
sudoku = new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
contatore = 0;
arrayControllo = [];
possibiliNumeri = [1,2,3,4,5,6,7,8,9];
creaSudoku();
visuaSudoku();
}
function creaSudoku() {
var errore;
var num;
var possibiliNumeri2;
var i;
if (sudoku.length < 81){
if (possibiliNumeri.length == 0){
sudoku[contatore] = 0;
contatore--;
creaSudoku();
}
else{
do {
errore = false;
num = Math.floor((Math.random() * 9) + 1);
for (i = 0; i<arrayControllo.length-1; i++){
if (arrayControllo[i] == num) errore = true
}
} while (errore == false)
switch(true){ //controllo righe
case (contatore < 9):
for (i = 0; i<9; i++){
if (sudoku[i] == num) errore = true;
}
case (contatore >= 9 && contatore < 18 ):
for (i = 9; i<18; i++){
if (sudoku[i] == num) errore = true;
}
case (contatore >= 18 && contatore < 27 ):
for (i = 18; i<27; i++){
if (sudoku[i] == num) errore = true;
}
case (contatore >= 27 && contatore < 36 ):
for (i = 27; i<36; i++){
if (sudoku[i] == num) errore = true;
}
case (contatore >= 36 && contatore < 45 ):
for (i = 36; i<45; i++){
if (sudoku[i] == num) errore = true;
}
case (contatore >= 45 && contatore < 54 ):
for (i = 45; i<54; i++){
if (sudoku[i] == num) errore = true;
}
case (contatore >= 54 && contatore < 63 ):
for (i = 54; i<63; i++){
if (sudoku[i] == num) errore = true;
}
case (contatore >= 63 && contatore < 72 ):
for (i = 63; i<72; i++){
if (sudoku[i] == num) errore = true;
}
case (contatore >= 72 && contatore < 81 ):
for (i = 72; i<81; i++){
if (sudoku[i] == num) errore = true;
}
}
switch(contatore % 9){ //controllo colonne
case (0):
for (i = 0; i<9; i++){
if (sudoku[(i*9)+contatore % 9] == num) errore = true;
}
break;
case (1):
for (i = 9; i<18; i++){
if (sudoku[(i*9)+contatore % 9] == num) errore = true;
}
break;
case (2):
for (i = 18; i<18; i++){
if (sudoku[(i*9)+contatore % 9] == num) errore = true;
}
break;
case (3):
for (i = 27; i<36; i++){
if (sudoku[(i*9)+contatore % 9] == num) errore = true;
}
break;
case (4):
for (i = 36; i<45; i++){
if (sudoku[(i*9)+contatore % 9] == num) errore = true;
}
break;
case (5):
for (i = 45; i<54; i++){
if (sudoku[(i*9)+contatore % 9] == num) errore = true;
}
break;
case (6):
for (i = 54; i<63; i++){
if (sudoku[(i*9)+contatore % 9] == num) errore = true;
}
break;
case (7):
for (i = 63; i<72; i++){
if (sudoku[(i*9)+contatore % 9] == num) errore = true;
}
break;
case (8):
for (i = 72; i<81; i++){
if (sudoku[(i*9)+contatore % 9] == num) errore = true;
}
break;
}
if (errore == false){
sudoku[contatore] = num;
arrayControllo[arrayControllo.length] = num;
contatore++;
possibiliNumeri = [1,2,3,4,5,6,7,8,9];
creaSudoku();
}
else{
var c=0;
for (i = 0; i < 9; i++){
if (possibiliNumeri[i] != num){
possibiliNumeri2[c] = num;
c++;
}
}
possibiliNumeri = possibiliNumeri2;
creaSudoku();
}
}
}
}
function visuaSudoku(){
var c;
for (c=0; c<81; c++){
console.log(sudoku[c]);
}
}
Grazie mille per l'aiuto