[Javascript] Soucis sur Sudoku 6x6

Fermé
reaverlost Messages postés 150 Date d'inscription jeudi 27 mai 2010 Statut Membre Dernière intervention 14 mai 2018 - 28 mai 2015 à 15:52
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...

A voir également: