Calcul de combinaisons d'un kakuro. avec fonctions avancées inclure/exclure des groupes de chiffres

Description

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)

Conclusion :


Le petit hic : je n'ai pas encore levé les exceptions qui risquent d'émerger si les formats de groupes ne sont pas respectés (pas d'espace avant le premier groupe, un seul espace entre chaques groupes).
L'autre petit hic : tout chiffre entré dans un champ inclure/exclure doit être contenu dans un groupe.

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.