da
angus » 1 nov 2010, 22:05
Io che sono grezzo farei così:
Assegno ad ogni "ruolo" un valore numerico, proporzionale al "peso" dell'incarico.
(mi servirà dopo per controllare le condizioni "incarico superiore/inferiore a...", "fa parte del direttivo"... e affini)
Presidente = 3
Vicepresidente = 2
Segretario = 1
Non nominato = 0
Le combinazioni possibili, come detto, sono 120 (6*5*4) perché si tratta di una disposizione semplice.
(o giù di lì, prego i puristi di chiudere entrmbi gli occhi.. sono un po' arrugginito sul calcolo combinatorio)
Creo un array con tutte le 120 combinazioni simile a questo (si fa con poche righe di qualsiasi linguaggio di programmazione usando una funzione ricorsiva):
- Codice: Seleziona tutto
A B C D E F
0 0 0 1 2 3
0 0 0 1 3 2
0 0 0 2 1 3
...
3 2 1 0 0 0
Scarto dall'array, attraverso dei semplici controlli, quelle combinazioni che non rispettano i requisiti.
A titolo di esempio, la prima condizione potrebbe essere:
se E==3 -> scarta tutte le combinazioni con A>0
Se è vero che solo una combinazione rispetta i requisiti... ne resterà soltanto uno.
Quello giusto.