1

Bonjour à tous smile ,

Pour ceux qui sont interessés j'ai réussi à programmer un calculateur de sommes kakuro (le fameux jeu japonais proche du sudoku) en TI-BASIC . Sur ma ti89 de base (non titanium) le programme a mis 6s pour calculer les combinaisons (25 en 5 chiffres), 5s pour (20 en 4 chiffres) et 3s pour (15 en 3 chiffres) .
6s pour (30 en 6 chiffres) , 5s pour (35 en 7 chiffres).

Pour 2 et 8 chiffres, ce n'est pas la peine, car c'est ultra facile à calculer à la main .

Voici les sources (il y a juste quelques differences entre chacune d'entre elles, mais je pense qu'il vaut mieux avoir plusieurs programmes et non aiguiller pour optimiser le calcul)
EndFor :EndPrgmPour 3 chiffres :kakcomb3(r) :Prgm :{«(«&string(r)&»,3)»}->sortie :r-6->rprime :For chf1,0,6 :For chf2,chf1,6 :2*chf2+chf1->r_p_deb :6+chf2+chf1->r_p_fin :If rprime >= r_p_deb and rprime <= r_p_fin Then :rprime-r_p_deb+chf2->chf3 :augment(sortie,{string(chf1+1)&string(chf2+2)&string(chf3+3)})->sortie :EndIf :EndFor :
EndFor :EndPrgmPour 4 chiffres :kakcomb4(r) :Prgm :{«(«&string(r)&»,4)»}->sortie :r-10->rprime :For chf1,0,5 :For chf2,chf1,5 :For chf3,chf2,5 :2*chf3+chf2+chf1->r_p_deb :5+chf3+chf2+chf1->r_p_fin :If rprime >= r_p_deb and rprime <= r_p_fin Then :rprime-r_p_deb+chf3->chf4 :augment(sortie,{string(chf1+1)&string(chf2+2)&string(chf3+3)&string(chf4+4)})->sortie :EndIf :EndFor :EndFor :
EndFor :EndPrgmPour 5 chiffres :kakcomb5(r) :Prgm :{«(«&string(r)&»,5)»}->sortie :r-15->rprime :For chf1,0,4 :For chf2,chf1,4 :For chf3,chf2,4 :For chf4,chf3,4 :2*chf4+chf23+chf2+chf1->r_p_deb :4+chf4+chf3+chf2+chf1->r_p_fin :If rprime >= r_p_deb and rprime <= r_p_fin Then :rprime-r_p_deb+chf4->chf5 :augment(sortie,{string(chf1+1)&string(chf2+2)&string(chf3+3)&string(chf4+4)&string(chf5+5)})->sortie :EndIf :EndFor :EndFor :EndFor :
EndFor :EndPrgmPour 6 chiffres :kakcomb6(r) :Prgm :{«(«&string(r)&»,6)»}->sortie :r-21->rprime :For chf1,0,3 :For chf2,chf1,3 :For chf3,chf2,3 :For chf4,chf3,3 :For chf5,chf4,3 :2*chf5+chf4+chf3+chf2+chf1->r_p_deb :3+chf5+chf4+chf3+chf2+chf1->r_p_fin :If rprime >= r_p_deb and rprime <= r_p_fin Then :rprime-r_p_deb+chf5->chf6 :augment(sortie,{string(chf1+1)&string(chf2+2)&string(chf3+3)&string(chf4+4)&string(chf5+5)&string(chf6+6)})->sortie :EndIf :EndFor :EndFor :EndFor :EndFor :
EndFor :EndPrgmPour 7 chiffres :kakcomb7(r) :Prgm :{«(«&string(r)&»,7)»}->sortie :r-28->rprime :For chf1,0,2 :For chf2,chf1,2 :For chf3,chf2,2 :For chf4,chf3,2 :For chf5,chf4,2 :For chf6,chf5,2 :2*chf6+chf5+chf4+chf3+chf2+chf1->r_p_deb :2+chf6+chf5+chf4+chf3+chf2+chf1->r_p_fin :If rprime >= r_p_deb and rprime <= r_p_fin Then :rprime-r_p_deb+chf6->chf7 :augment(sortie,{string(chf1+1)&string(chf2+2)&string(chf3+3)&string(chf4+4)&string(chf5+5)&string(chf6+6)&string(chf7+7)})->sortie :EndIf :EndFor :EndFor :EndFor :EndFor :EndFor :

Le programme attend la valeur de la somme à atteindre .
Le resultat est dans la variable sortie .

(Calculer 20 en 3 chiffres : kakcomb3(20) => sortie contient la liste des resultats sous forme de chaine) .

J'ai également tenté d'expliquer brièvement ma démarche dans les documents suivants (Potentiels négatifs.doc est à lire avant le deuxième document) :
tromb Fichier joint : potentiels négatifs.doc
tromb Fichier joint : une solution de calcul kakuro informatique plus rapide.doc