Bonjour,
Je suis en train de faire un Sudoku 6x6 (6 cases sur 6), et je bloc pour la vérification au niveau des blocs.
Mon Sudoku est découpé de cette manière :
|1||2||3| - |1||2||3|
|4||5||6| - |4||5||6|
--------------------
|1||2||3| - |1||2||3|
|4||5||6| - |4||5||6|
--------------------
|1||2||3| - |1||2||3|
|4||5||6| - |4||5||6|
Je suis en train de le générer entièrement, mais impossible de générer des valeurs différentes à chaque fois à l'intérieur d'un bloc.
Voici mon code :
var casesNumber = 6;
var possibilitiesLine = new Array();
var cellsBloc = new Array();
var arraySudoku = new Array();
/*Générer la grille entièrement*/
function generateSudoku() {
for (var i = 1; i <= casesNumber; i++) {
for (var j = 1; j <= casesNumber; j++) {
setNumbersPossibilityLine();
setArraySudoku(i, j, generateRandomNumber(i, j));
}
}
}
function generateRandomNumber(i, j) {
var nb = possibilitiesLine[Math.floor(Math.random() * possibilitiesLine().length)];
generateBloc(i, j);
verifyIndexBloc(nb);
return nb;
}
function verifyIndexBloc(nbGenerated) {
var lineTemp = null;
var columnTemp = null;
for(var z = 0; z < cellsBloc.length; z++) {
lineTemp = cellsBloc[z].substr(0, 1);
columnTemp = cellsBloc[z].substr(2, 3);
console.log(arraySudoku[lineTemp][columnTemp]);
if(nbGenerated == arraySudoku[lineTemp][columnTemp]) {
possibilitiesLine.splice(possibilitiesLine.indexOf(nbGenerated), 1);
}
}
}
/*Crée les blocs à partir du focus*/
function generateBloc(line, column) {
if(cellsBloc.length > 0) {
cellsBloc = [];
}
var focus = "";
if(line >= 5) {
focus += 5;
} else if(line == 4 || line == 3) {
focus += 3;
} else if(line < 3) {
focus += 1;
}
if(column >= 4) {
focus += 4;
} else {
focus += 1;
}
for(var i = focus.substr(0, 1); i <= addition(focus.substr(0, 1), 1); i++) {
for(var j = focus.substr(1, 2); j <= addition(focus.substr(1, 2), 2); j++) {
cellsBloc.push(i+"-"+j);
}
}
}
/*Crée un tableau contenant les chiffres de 1 à 6*/
function setNumbersPossibilityLine() {
if(possibilitiesLine.length > 0) {
possibilitiesLine = [];
}
for (i = 1; i <= casesNumber; i++) {
possibilitiesLine.push(i);
}
}
/*Vérifie si une valeur est présente dans un tableau*/
function inArray(entry, tab) {
for (var a = 1; a <= tab.length; a++) {
if (entry == tab[a]) {
return true;
}
}
return false;
}
Merci d'avance, je galère depuis plusieurs jours maintenant...