C'est une grille de 10x10 (ou moins pour les enfants, mais on va dire 10x10)
sur chaque ligne doivent se trouver autant de 0 que de 1 (= 5 de chaque)
pareil pour les colonnes
il ne doit pas y avoir plus de 2 0 ou 1 qui se suivent, en ligne ou en colonne
le but du jeu c'est de créer des grilles automatiques, en partie pré-remplies comme dans l'exemple joint
et aussi le solver permettant de les résoudre...
p'têt que ça existe, mais sans doute pas sous Excel
Y a-t-il un super programmeur ou un super formuliste (pour la partie résolution de grille) intéressé???
Sub Macro1()
' Macro1 Macro
' Macro enregistrée le 30/07/2011 par EXCEL
Range("B1,G1,J2,C3,D3,D4,I4,J4,H7,D9,J9,B10,D10,J10") = "0"
Range("B4,H3,C6,I6,C8,H8") = "1"
End Sub
PS: la grille vient d'un journal (j'ai la solution du numéro précédent, mais c'est long de saisir 100 chiffres )
@Staple : Ne t'excuses pas, je savais pas ce que la macro faisait dans ces cas là, ça me donne une idée du test final pour valider la solution
@JCGL : L'inconvénient c'est qu'il faut s'y plonger et comme je ne documente pas trop, pas le droit de lever le nez avant d'avoir fini. Pas facile de s'y retrouver même quelques heures après...
Je subodore que pour le Tazuku c'est du même ordre d'idée... Ne t'attends donc pas à une gentille formulette...
Tu peux faire tourner la sub Sub Taz_Combin de mon fichier en lui envoyant le paramètre 10, elle se contentera de sortir les lignes 'qualifiées'. Ce n,'est que les prémices de ce que tu souhaites mais c'est un passage obligé. La résumer en une formule est très possible mais déjà bien prenant.
C'est pourtant simple...
Tu balances des lettres (presque toutes les lettres de l’alphabet (que tu accompagnes d'un caractère typographique...)....
Tu leur dis de boucler tant que la valeur maxi n'est pas atteinte...
Bon c'est vrai il y a aussi deux ou trois "phrases" qui induisent des actions...
Bon j’arrête là mes digressions ...
Total respect KenDev.
Kendev : Je ne sais pas si tu as déjà lu des codes de Ti mais je pense que tu en as l'esprit. Et cela me réjouis.
A++ mon Ges (qui fait l'âne sur la non compréhension du code... Tu veux que je te sorte deux ou ou trois ligne de tes codes...). Bises chez toi
A+ KenDev
A + à tous
Une autre question pour KenDev
Le 27 juillet tu connaissais pas le Tazitki euh pardon le Takuzu, n'est ce pas ?
Le 30 juillet, ton code qui m'a laissé tout ébaubi tu l'as créé ex-nihilo sans docs sur le takuzu ?
Ou tu as trouvé de la matière (chose que je n'ai pas réussi à trouver ) sur le net ?
Tu es tout le contraire d'un Ken dans ce cas (celui de l'american doll), tu es l'obiwan bouclé du takuzu
Chapeau bas
PS: c'est vrai que j'ai toujours du mal avec les maths, j'ai recompté il y a 3 questions au final.
Hé Bé ! ... Bel exercice de style !
Mais ... Va falloir commander de l'aspirine !
Une suggestion, si je puis me permettre :
VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim i As Byte
i = Range("R3").Value
If Not Intersect(Target, Range("A1").Resize(i, i)) Is Nothing Then Target.Value = 1
Cancel = True
End Sub
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim i As Byte
i = Range("R3").Value
If Not Intersect(Target, Range("A1").Resize(i, i)) Is Nothing Then Target.Value = 0
Cancel = True
End Sub
Ou l'inverse, au choix...
Ca ne fait pas avancer les choses, mais ça prouve que j'essaie de suivre !
En complétant un peu à partir des codes de Victor21 et de Pierrot93
Code:
'En modifiant le premier code de Victor21 pour avoir un effacement
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim i As Byte
i = Range("R3").Value
If Not Intersect(Target, Range("A1").Resize(i, i)) Is Nothing Then Target.Value = ""
Cancel = True
End Sub
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim i As Byte
i = Range("R3").Value
If Not Intersect(Target, Range("A1").Resize(i, i)) Is Nothing Then Target.Value = 0
Cancel = True
End Sub
'Suivant une macro de Pierrot93
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
With Target
If .Count > 1 Then Exit Sub
.Value = IIf(.Value = 1, "", 1)
End With
End Sub
Il doit y avoir plus simple je pense mais pas encore assez doué.
Toujours en reprenant idée sur les codes de Victor21 et Pierrot93
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim i As Byte
i = Range("R3").Value
If Not Intersect(Target, Range("A1").Resize(i, i)) Is Nothing Then Target.Value = ""
Cancel = True
End Sub
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
With Target
If .Count > 1 Then Exit Sub
Cancel = True
.Value = IIf(.Value = 1, 0, 1): Exit Sub
End With
End Sub
J'me suis penché sur la grille du post 1 que j'ai remplie assez facilement et l'ai analysée par la suite ...
J'remarque 10 positions horizontales différentes possible et 2 verticales ...
En résumé avec une seule solution on peut déjà générer 20 grilles... je sais pas si ça peut vous aider mais j'ai cru appercevoir quelqu'un écrire qu'il y avait environ 80 grilles possibles ... Si tel est le cas suffit de trouver les 60 autres "matrices" ...
Ci-joint un exemple de mon explication sur 4 grilles différentes avec la meme base ...
Voici plusieurs exemples de la façon dont réaliser des grilles ...
Mis de coté le décallage d'une case vers la droite ou vers la gauche
La dernière à droite me parrait plus développée :
En construction du haut vers le bas :
11è ligne et 11è colonnes = Somme horizontale et verticale
Une fois les deux premières lignes remplies, la somme dans chaque colonne doit être égale à 1 et ainsi de suite ...
J'commence à me demander si je cherche pas davantage de solutions pour les remplir que pour les créer mais peut être si l'on sait comment les remplir, on sait comment les créer