Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Aide à la résolution d'un Kakuro Sam 6 Déc 2014 - 1:48 | |
| Un Kakuro est un jeu de la famille des puzzles numériques. Un pur jeu de réflexion. Il est une sorte de croisement entre un Sudoku et un Mot Fléché. En effet, il s'agit de remplir des lignes et colonnes qui se croisent, uniquement avec les chiffres de 1 à 9, sans doublons, ni horizontalement ni verticalement. Et on a un indice, dans les cases pleines à gauche ou au-dessus de l'espace à remplir, qui contient la somme des chiffres à placer. L'ordre est libre, à condition de respecter l'unicité horizontale et verticale des chiffres, et bien sûr la cohérence avec les définitions données pour chaque ligne et chaque colonne. Le jeu se résume donc à un raisonnement logique d'exclusion des impossibilités pour en déduire des certitudes. Voici un exemple d'un Kakuro: J'ai fait un petit outil en Panoramic pur qui permet d'avoir les décompositions additives de n'importe quel nombre entre 1 et 45 (45=1+2+3+4+5+6+7+8+9). Et pour plus de facilité, on peut avoir deux décompositions côte à côte, afin de mieux relever les possibles et impossibles. Voici le code de Kakuro_Aide.bas: - Code:
-
' Kakuro_Aide.bas
label go1, go2, moins1, moins2
dim i%, j%, n%, nn%, nt%, nd%, s$ dim tableau%(550,9), nombres%(550)
width 0,310 : height 0,450
alpha 10 : top 10,10 : left 10,10 : caption 10,"Nombre à décomposer:" spin 11 : top 11,30 : left 11,10 : width 11,50 : min 11,1 : max 11,45 : position 11,1 alpha 12 : top 12,60 : left 12,10 : caption 12,"Nombre de chiffres:" spin 13 : top 13,80 : left 13,10 : width 13,50 : min 13,0 : max 13,9 : position 13,0 button 20 : top 20,110 : left 20,10 : caption 20,"Décomposer" : on_click 20,go1 button 21 : top 21,130 : left 21,110 : width 21,30 : caption 21,"X" : on_click 21,moins1
list 30 : top 30,150 : left 30,10 : width 30,130 : height 30,250
alpha 110 : top 110,10 : left 110,150 : caption 110,"Nombre à décomposer:" spin 111 : top 111,30 : left 111,150 : width 111,50 : min 111,1 : max 111,45 : position 111,1 alpha 112 : top 112,60 : left 112,150 : caption 112,"Nombre de chiffres:" spin 113 : top 113,80 : left 113,150 : width 113,50 : min 113,0 : max 113,9 : position 113,0 button 120 : top 120,110 : left 120,150 : caption 120,"Décomposer" : on_click 120,go2 button 121 : top 121,130 : left 121,250 : width 121,30 : caption 121,"X" : on_click 121,moins2
list 130 : top 130,150 : left 130,150 : width 130,130 : height 130,250
read n% while n%<>0 if n%<0 nn% = 0 - n% else nt% = nt% + 1 nombres%(nt%) = nn% tableau%(nt%,1) = n% for i%=1 to nn%-1 read n% tableau%(nt%,1+i%) = n% next i% read n% tableau%(nt%,0) = n% end_if read n% end_while
end
go1: clear 30 n% = position(11) nd% = position(13) for i%=1 to nt% if (nd%=0) or (nombres%(i%)=nd%) if tableau%(i%,0)=n% s$ = str$(nombres%(i%))+": " for j%=1 to nombres%(i%) s$ = s$ + str$(tableau%(i%,j%))+"+" next j% item_add 30,left$(s$,len(s$)-1) : ' +" "+str$(nd%) end_if end_if next i% return moins1: if item_index(30)>0 then item_delete 30,item_index(30) return go2: clear 130 n% = position(111) nd% = position(113) for i%=1 to nt% if (nd%=0) or (nombres%(i%)=nd%) if tableau%(i%,0)=n% s$ = str$(nombres%(i%))+": " for j%=1 to nombres%(i%) s$ = s$ + str$(tableau%(i%,j%))+"+" next j% item_add 130,left$(s$,len(s$)-1) end_if end_if next i% return
moins2: if item_index(130)>0 then item_delete 130,item_index(130) return
data -1 data -2 data 1,2,3 data 1,3,4 data 1,4,5 data 2,3,5 data 1,5,6 data 2,4,6 data 1,6,7 data 2,5,7 data 3,4,7 data 1,7,8 data 2,6,8 data 3,5,8 data 1,8,9 data 2,7,9 data 3,6,9 data 4,5,9 data 1,9,10 data 2,8,10 data 3,7,10 data 4,6,10 data 2,9,11 data 3,8,11 data 4,7,11 data 5,6,11 data 3,9,12 data 4,8,12 data 5,7,12 data 4,9,13 data 5,8,13 data 6,7,13 data 5,9,14 data 6,8,14 data 6,9,15 data 7,8,15 data 7,9,16 data 8,9,17 data -3 data 1,2,3,6 data 1,2,4,7 data 1,2,5,8 data 1,3,4,8 data 1,2,6,9 data 1,3,5,9 data 2,3,4,9 data 1,2,7,10 data 1,3,6,10 data 1,4,5,10 data 2,3,5,10 data 1,2,8,11 data 1,3,7,11 data 1,4,6,11 data 2,3,6,11 data 2,4,5,11 data 1,2,9,12 data 1,3,8,12 data 1,4,7,12 data 1,5,6,12 data 2,3,7,12 data 2,4,6,12 data 3,4,5,12 data 1,3,9,13 data 1,4,8,13 data 1,5,7,13 data 2,3,8,13 data 2,4,7,13 data 2,5,6,13 data 3,4,6,13 data 1,4,9,14 data 1,5,8,14 data 1,6,7,14 data 2,3,9,14 data 2,4,8,14 data 2,5,7,14 data 3,4,7,14 data 3,5,6,14 data 1,5,9,15 data 1,6,8,15 data 2,4,9,15 data 2,5,8,15 data 2,6,7,15 data 3,4,8,15 data 3,5,7,15 data 4,5,6,15 data 1,6,9,16 data 1,7,8,16 data 2,5,9,16 data 2,6,8,16 data 3,4,9,16 data 3,5,8,16 data 3,6,7,16 data 4,5,7,16 data 1,7,9,17 data 2,6,9,17 data 2,7,8,17 data 3,5,9,17 data 3,6,8,17 data 4,5,8,17 data 4,6,7,17 data 1,8,9,18 data 2,7,9,18 data 3,6,9,18 data 3,7,8,18 data 4,5,9,18 data 4,6,8,18 data 5,6,7,18 data 2,8,9,19 data 3,7,9,19 data 4,6,9,19 data 4,7,8,19 data 5,6,8,19 data 3,8,9,20 data 4,7,9,20 data 5,6,9,20 data 5,7,8,20 data 4,8,9,21 data 5,7,9,21 data 6,7,8,21 data 5,8,9,22 data 6,7,9,22 data 6,8,9,23 data 7,8,9,24 data -4 data 1,2,3,4,10 data 1,2,3,5,11 data 1,2,3,6,12 data 1,2,4,5,12 data 1,2,3,7,13 data 1,2,4,6,13 data 1,3,4,5,13 data 1,2,3,8,14 data 1,2,4,7,14 data 1,2,5,6,14 data 1,3,4,6,14 data 2,3,4,5,14 data 1,2,3,9,15 data 1,2,4,8,15 data 1,2,5,7,15 data 1,3,4,7,15 data 1,3,5,6,15 data 2,3,4,6,15 data 1,2,4,9,16 data 1,2,5,8,16 data 1,2,6,7,16 data 1,3,4,8,16 data 1,3,5,7,16 data 1,4,5,6,16 data 2,3,4,7,16 data 2,3,5,6,16 data 1,2,5,9,17 data 1,2,6,8,17 data 1,3,4,9,17 data 1,3,5,8,17 data 1,3,6,7,17 data 1,4,5,7,17 data 2,3,4,8,17 data 2,3,5,7,17 data 2,4,5,6,17 data 1,2,6,9,18 data 1,2,7,8,18 data 1,3,5,9,18 data 1,3,6,8,18 data 1,4,5,8,18 data 1,4,6,7,18 data 2,3,4,9,18 data 2,3,5,8,18 data 2,3,6,7,18 data 2,4,5,7,18 data 3,4,5,6,18 data 1,2,7,9,19 data 1,3,6,9,19 data 1,3,7,8,19 data 1,4,5,9,19 data 1,4,6,8,19 data 1,5,6,7,19 data 2,3,5,9,19 data 2,3,6,8,19 data 2,4,5,8,19 data 2,4,6,7,19 data 3,4,5,7,19 data 1,2,8,9,20 data 1,3,7,9,20 data 1,4,6,9,20 data 1,4,7,8,20 data 1,5,6,8,20 data 2,3,6,9,20 data 2,3,7,8,20 data 2,4,5,9,20 data 2,4,6,8,20 data 2,5,6,7,20 data 3,4,5,8,20 data 3,4,6,7,20 data 1,3,8,9,21 data 1,4,7,9,21 data 1,5,6,9,21 data 1,5,7,8,21 data 2,3,7,9,21 data 2,4,6,9,21 data 2,4,7,8,21 data 2,5,6,8,21 data 3,4,5,9,21 data 3,4,6,8,21 data 3,5,6,7,21 data 1,4,8,9,22 data 1,5,7,9,22 data 1,6,7,8,22 data 2,3,8,9,22 data 2,4,7,9,22 data 2,5,6,9,22 data 2,5,7,8,22 data 3,4,6,9,22 data 3,4,7,8,22 data 3,5,6,8,22 data 4,5,6,7,22 data 1,5,8,9,23 data 1,6,7,9,23 data 2,4,8,9,23 data 2,5,7,9,23 data 2,6,7,8,23 data 3,4,7,9,23 data 3,5,6,9,23 data 3,5,7,8,23 data 4,5,6,8,23 data 1,6,8,9,24 data 2,5,8,9,24 data 2,6,7,9,24 data 3,4,8,9,24 data 3,5,7,9,24 data 3,6,7,8,24 data 4,5,6,9,24 data 4,5,7,8,24 data 1,7,8,9,25 data 2,6,8,9,25 data 3,5,8,9,25 data 3,6,7,9,25 data 4,5,7,9,25 data 4,6,7,8,25 data 2,7,8,9,26 data 3,6,8,9,26 data 4,5,8,9,26 data 4,6,7,9,26 data 5,6,7,8,26 data 3,7,8,9,27 data 4,6,8,9,27 data 5,6,7,9,27 data 4,7,8,9,28 data 5,6,8,9,28 data 5,7,8,9,29 data 6,7,8,9,30 data -5 data 1,2,3,4,5,15 data 1,2,3,4,6,16 data 1,2,3,4,7,17 data 1,2,3,5,6,17 data 1,2,3,4,8,18 data 1,2,3,5,7,18 data 1,2,4,5,6,18 data 1,2,3,4,9,19 data 1,2,3,5,8,19 data 1,2,3,6,7,19 data 1,2,4,5,7,19 data 1,3,4,5,6,19 data 1,2,3,5,9,20 data 1,2,3,6,8,20 data 1,2,4,5,8,20 data 1,2,4,6,7,20 data 1,3,4,5,7,20 data 2,3,4,5,6,20 data 1,2,3,6,9,21 data 1,2,3,7,8,21 data 1,2,4,5,9,21 data 1,2,4,6,8,21 data 1,2,5,6,7,21 data 1,3,4,5,8,21 data 1,3,4,6,7,21 data 2,3,4,5,7,21 data 1,2,3,7,9,22 data 1,2,4,6,9,22 data 1,2,4,7,8,22 data 1,2,5,6,8,22 data 1,3,4,5,9,22 data 1,3,4,6,8,22 data 1,3,5,6,7,22 data 2,3,4,5,8,22 data 2,3,4,6,7,22 data 1,2,3,8,9,23 data 1,2,4,7,9,23 data 1,2,5,6,9,23 data 1,2,5,7,8,23 data 1,3,4,6,9,23 data 1,3,4,7,8,23 data 1,3,5,6,8,23 data 1,4,5,6,7,23 data 2,3,4,5,9,23 data 2,3,4,6,8,23 data 2,3,5,6,7,23 data 1,2,4,8,9,24 data 1,2,5,7,9,24 data 1,2,6,7,8,24 data 1,3,4,7,9,24 data 1,3,5,6,9,24 data 1,3,5,7,8,24 data 1,4,5,6,8,24 data 2,3,4,6,9,24 data 2,3,4,7,8,24 data 2,3,5,6,8,24 data 2,4,5,6,7,24 data 1,2,5,8,9,25 data 1,2,6,7,9,25 data 1,3,4,8,9,25 data 1,3,5,7,9,25 data 1,3,6,7,8,25 data 1,4,5,6,9,25 data 1,4,5,7,8,25 data 2,3,4,7,9,25 data 2,3,5,6,9,25 data 2,3,5,7,8,25 data 2,4,5,6,8,25 data 3,4,5,6,7,25 data 1,2,6,8,9,26 data 1,3,5,8,9,26 data 1,3,6,7,9,26 data 1,4,5,7,9,26 data 1,4,6,7,8,26 data 2,3,4,8,9,26 data 2,3,5,7,9,26 data 2,3,6,7,8,26 data 2,4,5,6,9,26 data 2,4,5,7,8,26 data 3,4,5,6,8,26 data 1,2,7,8,9,27 data 1,3,6,8,9,27 data 1,4,5,8,9,27 data 1,4,6,7,9,27 data 1,5,6,7,8,27 data 2,3,5,8,9,27 data 2,3,6,7,9,27 data 2,4,5,7,9,27 data 2,4,6,7,8,27 data 3,4,5,6,9,27 data 3,4,5,7,8,27 data 1,3,7,8,9,28 data 1,4,6,8,9,28 data 1,5,6,7,9,28 data 2,3,6,8,9,28 data 2,4,5,8,9,28 data 2,4,6,7,9,28 data 2,5,6,7,8,28 data 3,4,5,7,9,28 data 3,4,6,7,8,28 data 1,4,7,8,9,29 data 1,5,6,8,9,29 data 2,3,7,8,9,29 data 2,4,6,8,9,29 data 2,5,6,7,9,29 data 3,4,5,8,9,29 data 3,4,6,7,9,29 data 3,5,6,7,8,29 data 1,5,7,8,9,30 data 2,4,7,8,9,30 data 2,5,6,8,9,30 data 3,4,6,8,9,30 data 3,5,6,7,9,30 data 4,5,6,7,8,30 data 1,6,7,8,9,31 data 2,5,7,8,9,31 data 3,4,7,8,9,31 data 3,5,6,8,9,31 data 4,5,6,7,9,31 data 2,6,7,8,9,32 data 3,5,7,8,9,32 data 4,5,6,8,9,32 data 3,6,7,8,9,33 data 4,5,7,8,9,33 data 4,6,7,8,9,34 data 5,6,7,8,9,35 data -6 data 1,2,3,4,5,6,21 data 1,2,3,4,5,7,22 data 1,2,3,4,5,8,23 data 1,2,3,4,6,7,23 data 1,2,3,4,5,9,24 data 1,2,3,4,6,8,24 data 1,2,3,5,6,7,24 data 1,2,3,4,6,9,25 data 1,2,3,4,7,8,25 data 1,2,3,5,6,8,25 data 1,2,4,5,6,7,25 data 1,2,3,4,7,9,26 data 1,2,3,5,6,9,26 data 1,2,3,5,7,8,26 data 1,2,4,5,6,8,26 data 1,3,4,5,6,7,26 data 1,2,3,4,8,9,27 data 1,2,3,5,7,9,27 data 1,2,3,6,7,8,27 data 1,2,4,5,6,9,27 data 1,2,4,5,7,8,27 data 1,3,4,5,6,8,27 data 2,3,4,5,6,7,27 data 1,2,3,5,8,9,28 data 1,2,3,6,7,9,28 data 1,2,4,5,7,9,28 data 1,2,4,6,7,8,28 data 1,3,4,5,6,9,28 data 1,3,4,5,7,8,28 data 2,3,4,5,6,8,28 data 1,2,3,6,8,9,29 data 1,2,4,5,8,9,29 data 1,2,4,6,7,9,29 data 1,2,5,6,7,8,29 data 1,3,4,5,7,9,29 data 1,3,4,6,7,8,29 data 2,3,4,5,6,9,29 data 2,3,4,5,7,8,29 data 1,2,3,7,8,9,30 data 1,2,4,6,8,9,30 data 1,2,5,6,7,9,30 data 1,3,4,5,8,9,30 data 1,3,4,6,7,9,30 data 1,3,5,6,7,8,30 data 2,3,4,5,7,9,30 data 2,3,4,6,7,8,30 data 1,2,4,7,8,9,31 data 1,2,5,6,8,9,31 data 1,3,4,6,8,9,31 data 1,3,5,6,7,9,31 data 1,4,5,6,7,8,31 data 2,3,4,5,8,9,31 data 2,3,4,6,7,9,31 data 2,3,5,6,7,8,31 data 1,2,5,7,8,9,32 data 1,3,4,7,8,9,32 data 1,3,5,6,8,9,32 data 1,4,5,6,7,9,32 data 2,3,4,6,8,9,32 data 2,3,5,6,7,9,32 data 2,4,5,6,7,8,32 data 1,2,6,7,8,9,33 data 1,3,5,7,8,9,33 data 1,4,5,6,8,9,33 data 2,3,4,7,8,9,33 data 2,3,5,6,8,9,33 data 2,4,5,6,7,9,33 data 3,4,5,6,7,8,33 data 1,3,6,7,8,9,34 data 1,4,5,7,8,9,34 data 2,3,5,7,8,9,34 data 2,4,5,6,8,9,34 data 3,4,5,6,7,9,34 data 1,4,6,7,8,9,35 data 2,3,6,7,8,9,35 data 2,4,5,7,8,9,35 data 3,4,5,6,8,9,35 data 1,5,6,7,8,9,36 data 2,4,6,7,8,9,36 data 3,4,5,7,8,9,36 data 2,5,6,7,8,9,37 data 3,4,6,7,8,9,37 data 3,5,6,7,8,9,38 data 4,5,6,7,8,9,39 data -7 data 1,2,3,4,5,6,7,28 data 1,2,3,4,5,6,8,29 data 1,2,3,4,5,6,9,30 data 1,2,3,4,5,7,8,30 data 1,2,3,4,5,7,9,31 data 1,2,3,4,6,7,8,31 data 1,2,3,4,5,8,9,32 data 1,2,3,4,6,7,9,32 data 1,2,3,5,6,7,8,32 data 1,2,3,4,6,8,9,33 data 1,2,3,5,6,7,9,33 data 1,2,4,5,6,7,8,33 data 1,2,3,4,7,8,9,34 data 1,2,3,5,6,8,9,34 data 1,2,4,5,6,7,9,34 data 1,3,4,5,6,7,8,34 data 1,2,3,5,7,8,9,35 data 1,2,4,5,6,8,9,35 data 1,3,4,5,6,7,9,35 data 2,3,4,5,6,7,8,35 data 1,2,3,6,7,8,9,36 data 1,2,4,5,7,8,9,36 data 1,3,4,5,6,8,9,36 data 2,3,4,5,6,7,9,36 data 1,2,4,6,7,8,9,37 data 1,3,4,5,7,8,9,37 data 2,3,4,5,6,8,9,37 data 1,2,5,6,7,8,9,38 data 1,3,4,6,7,8,9,38 data 2,3,4,5,7,8,9,38 data 1,3,5,6,7,8,9,39 data 2,3,4,6,7,8,9,39 data 1,4,5,6,7,8,9,40 data 2,3,5,6,7,8,9,40 data 2,4,5,6,7,8,9,41 data 3,4,5,6,7,8,9,42 data -8 data 1,2,3,4,5,6,7,8,36 data 1,2,3,4,5,6,7,9,37 data 1,2,3,4,5,6,8,9,38 data 1,2,3,4,5,7,8,9,39 data 1,2,3,4,6,7,8,9,40 data 1,2,3,5,6,7,8,9,41 data 1,2,4,5,6,7,8,9,42 data 1,3,4,5,6,7,8,9,43 data 2,3,4,5,6,7,8,9,44 data -9 data 1,2,3,4,5,6,7,8,9,45 data 0
Et voici ce que ça donne en cours de jeu: On voit que dans la première colonne, le nombre 17 ne peut se composer que de 7 et 9. Et dans la 6ème ligne, le nombre 16 ne peut être composé que de 7 et 9. Or,le seul nombre commun est le 9, et il doit donc se trouver dans la case commune de ces deux définitions. La place des autres nombres de ces deux définitions en découlent directement. Et ainsi de suite. EDIT J'ai ajouté un bouton "X" sur chacune des deux listes de décomposition, afin de pouvoir éliminer la possibilité qui est sélectionnée. Ceci permet de réduire visuellement la liste des combinaisons aux combinaisons acceptables, selon le contexte. Il suffit de recliquer sur le bouton "Décomposer" pour obtenir à nouveau toutes les possibilités. | |
|