Détermine une combinaison d'un kakuro (somme, nbr de chiffres): il faut utiliser un certain nombre de chiffres (sauf 0), qui de 2 à 9, pour remplir la somme. Comme au SuDOku, les chiffres ne peuvent pas être répétés au cours d'une somme. Ce programme permet de connaître les différentes additions possibles.
Ce code ouvre une fenetre où l'on choisit (par listes déroulantes mises à jour automatiquement) le nombre de chiffres et le résultat. Mais j'ai aussi rajouté deux fonctionnalités : l'inclusion obligatoire de groupes, et l'exclusion.
Inclusion obligatoire de groupes :
** groupes : un groupe se présente de la forme suivante : {c1,c2,c3,...,cn} ; où c1 ... cn sont les différents chiffres du groupe.
** les chiffres à l'intérieur des groupes sont liés par une condition logique OU, les groupes sont liés par une condition logique ET. Donc au moins un chiffre de chaque groupe doit être inclus dans une somme pour qu'elle soit conservée.
** ainsi si j'entre "{5,3}{7}"
** dans une entrée, un chiffre peut être présent dans plusieurs groupes : une entrée comme "{5,3} {3}" est valable
** dans un groupe, l'ordre des chiffres n'a pas d'importance
Exclusion de chiffres
** même règles que pour l'inclusion de groupes. Par conséquent, pour qu'une somme soit retirée, il suffit que l'un des groupes entrés a l'un de ses chiffres présent dans cette somme.
Principe de fonctionnement général
3 différentes étapes successives
1) calcul des combinaisons brute
2) élimination des combinaisons en tenant compte des inclusions
3) élimination des combinaisons en tenant compte des exclusions
Je tenterais de donner une explication plus détaillée ultérieurement
Attention : il faut au moins posséder Java5 pour compiler le fichier (à cause des définitions génériques)