Question

Je fais un jeu (2x2) sudoku et j'ai besoin de Achevée un puzzle. Cela signifie que certains chiffres sont immuables (ils ne peuvent pas être déplacés à leur place.

Dans un jeu 2x2, il y en a 16 Digits. Les faits problématiques sont rows, columnle sable blockS (Obtenez-le?). La row est la seule variable de planification.

J'ai spécifié boolean fixed comme attribut pour Digit. Mais (selon le guide de l'utilisateur), je n'ai trouvé aucun endroit pour l'implémenter.

Quelles sont les moyens de rendre les entités de planification immuables?


Je trouve ces méthodes:

  1. Mettre en œuvre un moveFactory qui change le row Seulement s'il est immuable. Cette méthode est non documenté.
  2. Si la row n'est pas égal à un fixed_row, casser une contrainte dure.
  3. Utilisation @ValueRangeFromPlanningProperty. Laissez les entités immuables value_range d'un seul élément, et les entités mutables ont une liste qui exclut les lignes fixes. Cela ne semble pas durable pour quelque chose de plus grand qu'un projet Sudoku, non? Et il y a (mon?) Des pièges présumés qui déraillent le solveur?

Question supplémentaire: La méthode n ° 3 est-elle le moyen recommandé pour quelque chose comme un problème de horaire (allouer un sujet-enseignant à une période possible)?

Était-ce utile?

La solution

Option 4: Les chiffres fixes sont des faits problématiques: instances d'une classe qui n'a pas d'annotation @PlanningEntity. Les chiffres non fixés sont des entités de planification: instances d'une classe qui a une @PlanningEntity.

Si vous souhaitez réutiliser la même classe pour les deux à des fins de conception:

  1. Un MoveFactory personnalisé serait le moyen. La rédaction d'une usine de déménagement personnalisée est documentée: c'est juste une affaire ajoutant une instruction IF pour exclure les mouvements qui modifient un chiffre fixe.
  2. Dans ce cas, ce n'est pas une contrainte dure à intégrer mais une contrainte dure normale, je ne recommanderais pas cela pour ce cas d'utilisation. Voir les informations manuelles sur les "contraintes dures intégrées"
  3. Exagéré, mais ça fonctionnerait :)

Option 5: https://issues.jboss.org/browse/jbrules-3359

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top