Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Sudoku: règles de remplissage [ Algorithme / Maths ] (altozinzin)

samedi 17 mars 2007 à 19:49:56 | Sudoku: règles de remplissage

altozinzin

Bonjour à tous. Tout d'abord je tiens à préciser que j'ai regarder les sources des sudoku présents, mais ils sont au-dessus de mon niveau (ba oui, je suis un débutant autodidacte, c'est pas facile, lol).
Voila mon soucis: je veux générer une grille pleine 9*9 de sudoku. J'arrive à respecter les règles des colonnes et des lignes ( je met moins de 5 sec à la générer en moyenne) mais je ne parviens pas à trouver un algo pour la règle des grilles 3*3. J'ai bidouillé quelques trucs mais dans ce cas au bout de 2h toujours pas la moindre grille de générer (je me met à la place du gars qui veut se faire un sudoku rapidos, s'il doit attendre 10h sa grille, ...).

Voila mes lignes de commandes, vous allez surement trouver ça trés brouillons, mal organisé, voire trop compliqué mais bon, ayez pitié, lol.


Private Sub Command1_Click()
Label10 = 0
Label12 = 0
Timer1.Enabled = True
Randomize Timer

inrecominche:
sortie = 0
' Création du tableau
Dim tableau(8, 8)
For a = 0 To 8
For b = 0 To 8
tableau(a, b) = "-"
Next b
Next a
'On commence le remplissage
Dim nbr1 As Integer
Dim nbr2 As Integer
For z = 1 To 9
For a = 1 To 9
debut:
DoEvents
nbr1 = Rnd * 8
nbr2 = Rnd * 8
'On regarde si la case est vide
If tableau(nbr1, nbr2) = "-" Then GoTo Suite1
GoTo debut
Suite1:
'On vérifie les règles colonnes et lignes du Sudoku
For b = nbr1 - -1 To 8

If tableau(b, nbr2) = z Then
' La petite commande sortie c'est juste pour pas que prog tourne à l'inifini alors qu'il n'y a pas de solution
sortie = sortie - -1
If sortie = 81 Then
GoTo inrecominche
End If
GoTo debut
End If

Next b
For b = 0 To nbr1 - 1
If tableau(b, nbr2) = z Then GoTo debut
Next b
For b = nbr2 - -1 To 8
If tableau(nbr1, b) = z Then GoTo debut
Next b
For b = 0 To nbr2 - 1
If tableau(nbr1, b) = z Then GoTo debut
Next b
tableau(nbr1, nbr2) = z
sortie = 0
Next a
Next z

'Si tout est OK, on rempli les labels
b = 0
c = 0
For a = 0 To 80
Label1(a) = tableau(b, c)
c = c - -1
If c = 9 Then
    c = 0
    b = b - -1
End If
Next a
Timer1.Enabled = False
End Sub

Au fait pour les commandes du style b = b - - 1, je ne met pas b= b +1 parce que sinon au lieu d'ajouter 1 a la valeur précédente, ça me rajoute le chiffre 1 à la fin du nombre et ça me fait 1111111 au lieu de 7, mais je sais pas pourquoi.
Merci d'avance.

samedi 17 mars 2007 à 20:42:01 | Re : Sudoku: règles de remplissage

jmfmarques

Membre Club
il suffirait sans doute de dire que b est un integer, pour éviter certains désagréments ....

dimanche 8 juillet 2007 à 22:48:58 | Re : Sudoku: règles de remplissage

damienpasqualinotto

Salut, c'est peut être trop tard mais pour ton probleme de la régle des grilles de 3x3 je pense qu'il vaut mieu que tu utilise un tableau de (2*2*2*2) plutot que de (8*8). C'est surment plus compliqué pour les coordonée des case mais au moins tu poura en plus des lignes et des colones gérer les grandes cases dans ta vérification des régles


jeudi 1 novembre 2007 à 23:27:13 | Re : Sudoku: règles de remplissage

najma0202

slt j veut un algo ki me donne ke la solution de sudoku est vrai ou nn vite plz



Cette discussion est classé dans : tableau, to, sudoku, nbr2, nbr1


Répondre à ce message

Sujets en rapport avec ce message

Tableau a plusieurs dimensions [ par mathfromaix ] Bonjour,Je debute en Basic et j'ai une petite une petite question, je souhaite creer un tableau ( c pour mon MSChart) a plusieurs dimensions cad par e variables globales [ par sadus ] j'utilise deux classes et j'aimerais avoir un tableau comme variable globale qui soient communes aux deux classes. si je fais dim tableau(1 to 50,8) a PB de déclaration de tableau(1 to 48) pour l'enreg sur fichier [ par ALEX001 ] Salut tous le monde,Mon probléme est que j'ai déclarer 4 tableau dans un moduleex : tableau1(1 to 48) as boolean et je soute enregistrer le resultat peut-on déclarer un tableau comme Public ? [ par skymath ] Je n'arrive pas à déclarer un table à 2 dimensions comme public.En effet, lorsque dans la section (générale)-(déclaration) de la fenêtre code je décla dimension d'un tableau 2D [ par Kywalh ] Salut,j'aimerais savoir comment faire pour connaitre la borne sup d'un tableau en 2D. En fait, g un tableau: Tab(0 to 4, 1 to k)que je redimension redimensionner un tableau [ par joflo ] j'ai un tableau tab_nom(1 to 100,1 to 2) qui s'avère trop petit suivant l'utilisation je voudrais le redimensionner à volontécomment faire pour redime Allocation de tableau [ par Rurouni ] Bonjour.J ai un peti probleme qui doit sembler nul, mais je veux allouer mon tableau "dynamiquement".En gros je fais:nbr2 = Int(r)Dim Tableau(nbr2)Sur Tableaux multidimensionels [ par Ben ] Salut, je lis un fichier de 21 colonnes et 44 lignes. Je voudrais avoir un tableau dynamique pour qu'il contienne le nombre d'éléments qu'il y a dans Tableau Dynamique [ par lookool ] je voudrais pouvoir rajouter des colonnes et des lignesdans un tableau dynamique mais je n'ai pas bien saisi comment faire j'ai essayé quelque chose TxtBox est il possible de les "indexer" [ par sagoirand ] aaristoteUn débutant qui n'a pas su trouver la réponse dans le forumje m'en remets à vous Merci par avanceJe souhaite remplir un tableau à partir de d


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,187 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.