Bonjour à tous,

Voici mon problème, j'ai entrepris de convertir une fonction récursive qui permet de générer des grilles de sudoku de PHP vers VB.

Le problème qui se pose est le type de retour qui est à la fois un Integer(,) et un booléen.

Je ne sais pas comment résoudre la solution, l'algorithme marche mis à part la fin de l'appel ( le damier est bien remplis ).

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 Private Function creer_grille(Optional ByVal grille As Integer(,) = Nothing, Optional ByVal position As Integer = 0)
        Dim i, j, v As Integer
        Dim valeurs = New List(Of Integer)
        Dim resultat As Boolean
 
        'retourne la grille trouvée si nous sommes a la fin
        If (position = 81) Then
            Return (grille)
        End If
 
        'calcul de la ligne et colonne
        i = Math.Floor(position / 9)
        j = position Mod 9
 
        'liste des nombres de 1 à 9
        valeurs.AddRange({1, 2, 3, 4, 5, 6, 7, 8, 9})
 
        'efface les valeurs déjà utilisées
        If (v > 0) Then
            For k As Integer = 0 To 8
                'retire la valeur de la ligne
                If (v = Int(grille(i, k))) Then
                    valeurs.RemoveAt(v - 1)
                End If
 
                'retire la valeur de la colonne
                If (v = Int(grille(k, j))) Then
                    valeurs.RemoveAt(v - 1)
                End If
 
                'retire la valeur de la zone
                If (v = Int(grille(i + Math.Floor(k / 3), j + (k Mod 3)))) Then
                    valeurs.RemoveAt(v - 1)
                End If
            Next
        End If
 
        'mélange les valeurs
        valeurs = shuffleList(valeurs)
 
        For Each v In valeurs
            grille(i, j) = v
 
            resultat = creer_grille(grille, position + 1)
 
            If (resultat) Then
                Return resultat
            End If
 
            grille(i, j) = Nothing
        Next
 
        Return False
    End Function
Merci d'avance pour votre aide