papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Générateur de grilles de Sudoku Ven 17 Déc 2021 - 4:43 | |
| Tout est dans le code. - Code:
-
rem ============================================================================ rem Générateur de grilles de Sudoku rem ============================================================================ rem Il existe un moyen facile de remplir un puzzle Sudoku complet - remplissage rem de groupe et décalage circulaire. rem Remplissez la première ligne avec neuf nombres différents. rem Remplissez la deuxième ligne qui est un décalage de la première ligne de trois emplacements. rem Remplissez la troisième ligne qui est un décalage de la deuxième ligne de trois emplacements. rem Remplissez la quatrième ligne qui est un décalage de la troisième par un seul emplacement. rem ============================================================================ rem Pour empêcher l’utilisateur de remarquer le motif évident, il peut être judicieux de randomiser rem l’ordre des lignes et des colonnes afin qu’il n’y ait plus de motif. rem Tant que les 9 numéros de chaque ligne / colonne se déplacent ensemble en une seule unité, rem la carte Sudoku restera toujours valide. rem ============================================================================ dim vecteur(9), ligne$(9),i label clic caption 0,"Générateur de Sudoku" application_title "Générateur de Sudoku" button 100 : top 100,50 : left 100,400 : width 100,100 caption 100,"Nouveau Sudoku" : on_click 100,clic button 110 : top 110,100 : left 110,400 : caption 110,"Info" : on_click 110,clic button 120 : top 120,150 : left 120,400 : caption 120,"Quitter" : on_click 120,clic color 0,100,150,200 Grille() Sudoku() end rem ============================================================================ clic: select number_click case 100 : Sudoku() case 110 : Info() case 120 : terminate end_select return rem ============================================================================ SUB Grille() dim_local ligne,colonne,objet,w,w1 w = 20 : w1 = w+10 for ligne = 1 to 9 for colonne = 1 to 9 objet = (ligne-1)*9 + colonne edit objet : left objet,10+colonne*w1 : top objet,10+ligne*w1 width objet,w : height objet,w : color objet,100,250,200 font_color objet,200,0,0 : font_bold objet next colonne next ligne
2d_pen_width 4 : 2d_pen_color 255,0,0 2d_rectangle w1+5,w1+5,w1*10+5,w1*10+10 2d_line 4*w1+5,w1+5,4*w1+5,w1*10+7 : 2d_line 7*w1+5,w1+5,7*w1+5,w1*10+7 2d_line w1+5,4*w1+7,w1*10+2,4*w1+7 : 2d_line w1+5,7*w1+7,w1*10+2,7*w1+7 END_SUB rem ============================================================================
FNC Sudoku() for i = 1 to 9 : vecteur(i) = i : next i : ' initialisation du vecteur trié ligne$(1) = Melanger_Vecteur$() : ' mélanger les éléments du vecteur ligne$(2) = Decaler$(ligne$(1),3) ligne$(3) = Decaler$(ligne$(2),3) ligne$(4) = Decaler$(ligne$(3),1) ligne$(5) = Decaler$(ligne$(4),3) ligne$(6) = Decaler$(ligne$(5),3) ligne$(7) = Decaler$(ligne$(6),1) ligne$(8) = Decaler$(ligne$(7),3) ligne$(9) = Decaler$(ligne$(8),3)
for i = 1 to 9 : Afficher(ligne$(i),i) : next i end rem ============================================================================ ' Mélanger les éléments d'un tableau trié FNC Melanger_Vecteur$() dim_local pos,sauve,hasard,ret$ for pos = 9 to 1 step -1 hasard = int(rnd(pos)+1) sauve = vecteur(pos) vecteur(pos) = vecteur(hasard) vecteur(hasard) = sauve next pos for pos = 1 to 9 : ret$ = ret$ + str$(vecteur(pos)) : next pos result ret$ END_FNC rem ============================================================================ ' décalage de n positions à gauche des éléments d'une ligne (vecteur) FNC Decaler$(l$,n) result right$(l$,9-n) + left$(l$,n) END_FNC rem ============================================================================ ' Affichage du Sudoku SUB Afficher(ligne$,j) dim_local i,c$ for i = 1 to 9 c$ = mid$(ligne$,i,1) : text (j-1)*9+i," " + c$ next i END_SUB rem ============================================================================ SUB Info() dim_local t$ t$ = "Le but du jeu est de remplir la grille avec une série de chiffres" +chr$(13) t$ = t$ + "(ou de lettres ou de symboles) tous différents, qui ne se trouvent jamais"+chr$(13) t$ = t$ + "plus d’une fois sur une même ligne, dans une même colonne ou dans une même"+chr$(13) t$ = t$ + "région (également appelée « bloc », « groupe », « secteur » ou « sous-grille »)." +chr$(13) t$ = t$ + "La plupart du temps, les symboles sont des chiffres allant de 1 à 9,"+chr$(13) t$ = t$ + "les régions étant alors des carrés de 3 × 3" message t$ END_SUB rem ============================================================================
| |
|
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Générateur de grilles de Sudoku Ven 17 Déc 2021 - 8:09 | |
| Bonjour Papydall et bonjour à tous ! Merci pour ce Générateur de grilles de Sudoku. Pour ma part je suis un habitué de ces petites cases... Une petite question tout de même sur ce générateur... Lors de la création de la grille, comment on peux faire pour savoir quelle case laisser vide et quelle case remplir ? Il ne s'agit pas de faire un choix au hasard, car sinon l'utilisateur risque de ne jamais pouvoir finir la grille... J'avais lu qu'il fallait un minimum de chiffres dans la grille. Je ne sais plus le nombre exactement. je crois que c'était une quinzaine. Mais cela ne résout pas le problème. Quelles cases laisser visibles ???? Cela dit Bravo pour cette réalisation. | |
|
jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: Re: Générateur de grilles de Sudoku Ven 17 Déc 2021 - 16:56 | |
| Je n'ai jamais été passionné par les sudokus... Et alors, ça se joue comment ? | |
|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Générateur de grilles de Sudoku Ven 17 Déc 2021 - 17:31 | |
| C'est extrêmement simple (la règle, pas forcément la solution !), il faut remplir chaque case vide avec un chiffre entre 1 et 9, en se basant sur les chiffres déjà présents, sachant que: Chaque rangée, chaque colonne et chaque groupe de 9 cases (donc 9 groupes) doivent contenir TOUS les chiffres 1 à 9 (et donc jamais deux fois le même chiffre dans un de ces éléments). | |
|
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Générateur de grilles de Sudoku Ven 17 Déc 2021 - 18:19 | |
| Je n'avais pas fait suffisamment attention ce matin mais en fait c'est toujours la même série de chiffres sur chaque ligne qui se répète. Ce qui enlève du coup tout intérêt à ce jeu de réflexion ! Il faudrait pouvoir remplir les cases d'une façon plus 'aléatoire'. Quoi que 'Aléatoire' n'est certainement pas le bon mot. Puisqu'il s'agit plutôt d'une organisation complexe... | |
|
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Générateur de grilles de Sudoku Ven 17 Déc 2021 - 19:09 | |
| Générer des grilles avec des niveaux de difficulté variables me semble assez compliqué ! Personnellement je me suis fait un programme de génération en panoramic qui utilise un exécutable externe, appelable en ligne de commande, qui permet de générer 4 niveaux différents de difficulté : https://qqwing.com/qqwing-1.0.1-1.windows.bin.zipJe génère ainsi des feuilles de 12 grilles au format A4, de niveau au choix 1 à 4 (perso, 1 ça me suffit !) Il y a un tas d'autres possibilités, à voir dans l'aide, notamment de résoudre des grilles. | |
|
Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Générateur de grilles de Sudoku Ven 17 Déc 2021 - 20:31 | |
| Huuum ça peut être intéressant effectivement. Merci pour le partage JL35. | |
|
Contenu sponsorisé
| Sujet: Re: Générateur de grilles de Sudoku | |
| |
|