Domanda

Sto realizzando un gioco Sudoku (2X2) e ne ho bisogno completare un puzzle.Ciò significa che alcune cifre sono immutabili (non possono essere spostate fuori posto.

In una partita 2X2 ce ne sono 16 DigitS.I fatti problematici sono rowS, columnsabbia blocks (capito?).IL row è l'unica variabile di pianificazione.

ho specificato boolean fixed come attributo per Digit.Ma (come da guida per l'utente), non ho trovato un posto dove implementarlo.

Quali sono le modalità per rendere effettivamente immutabili alcune entità di pianificazione?


Trovo questi metodi:

  1. Implementare a moveFactory questo cambia il row solo se è immutabile.Questo metodo è non documentato.
  2. Se la row non è uguale ad a fixed_row, rompere un vincolo duro.
  3. Utilizzo @ValueRangeFromPlanningProperty.Lasciamo che le entità immutabili abbiano a value_range di un singolo elemento e le entità mutabili hanno un elenco che esclude le righe fisse.Ciò sembra insostenibile per qualcosa di più grande di un progetto Sudoku, giusto?E ci sono (mie?) presunte insidie ​​che fanno deragliare il risolutore?

Domanda in più:il metodo n. 3 è quello consigliato per qualcosa come un problema di orario (assegnare la materia dell'insegnante a un periodo possibile)?

È stato utile?

Soluzione

Opzione 4:Le cifre fisse sono fatti problematici:istanze di una classe che non ha un'annotazione @PlanningEntity.Le cifre non fisse sono entità di pianificazione:istanze di una classe che ha un @PlanningEntity.

Se desideri riutilizzare la stessa classe per entrambi a fini di progettazione:

  1. Una MoveFactory personalizzata sarebbe la soluzione.La scrittura di una move factory personalizzata è documentata:è solo questione di aggiungere un'istruzione if per escludere le mosse che modificano una cifra fissa.
  2. In tal caso non si tratta di un vincolo rigido integrato ma di un vincolo rigido normale, non lo consiglierei per questo caso d'uso.Consulta le informazioni manuali sui "vincoli rigidi incorporati"
  3. Eccessivo, ma funzionerebbe :)

Opzione 5: https://issues.jboss.org/browse/JBRULES-3359

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top