Je suis prof de maths et débute dans la programmation et je souhaite créer un programme en Pascal qui génère des grilles de Sudoku en permutant deux lignes d'un même bloc entre elles, deux colonnes d'un même bloc entre elles et deux blocs entre eux horizontalement et verticalement.
Un bloc est une sous-grille de 3 lignes (ou colonnes) "l1,l2,l3" ou "l4,l5,l6" ou "l7,l8,l9" ou "c1c2c3" ou "c4c5c6" ou "c7c8c9" (l=ligne c=colonne).
Et tout cela de façon aléatoire!!!
ATTENTION : deux lignes (ou colonnes) de 2 blocs distincts ne peuvent pas etre permutées sinon on perdrait l'unicité et même peut-être l'existence de la solution de la grille de Sudoku ?
L’algorithme serait :
Pour chaque bloc il y a 6 façons de permuter les lignes (ou colonnes), chaque permutation on lui administre un chiffre 1 ou 2 ou..ou 6.
L'algo serait de définir de façon aléatoire un nombre entre 0 et 1 (exclus) avec 8 décimales celles-ci comprises entre 1 et 6 (sinon prendre le reste de sa divisions euclidienne par 6) dont :
la 1° décimale correspondrait a la permutation du 1er bloc verticale(les 3 premières colonnes)
la 2° du 2° bloc (les 3 colonnes suivantes)
la 3° du 3° bloc (les 3 dernières colonnes)
la 4 du 1° bloc horizontale
la 5° du 2° bloc horizontale
la 6° du 2° bloc horizontale
la 7° des blocs horizontaux entre eux
la 8° des bloc verticaux entre eux
Chaque fois qu'un nombre sera généré cela entraînera une combinaison de permutations et donc une nouvelle grille!!!
Voilà pour l'algo !!!
Pour la programmation comme je découvre je ne sais pas du tout comment m'y prendre, merci de m'aider !!!
Merci de votre aide.
Partager