Parto dal codice sperando che si capisca il ragionamento:
Codice: Seleziona tutto
public List<List<int>> selezione(List<Tentativo> tentativi)
{
int nCifre, cardinalita, nTent, ris;
List<List<int>> superstiti = new List<List<int>>();
cardinalita = 10;
nCifre = 4;
nTent = tentativi.Count;
// X 4 CIFRE
for (int i = 0; i < cardinalita; i++)
for (int j = 0; j < cardinalita; j++)
for (int k = 0; k < cardinalita; k++)
for (int m = 0; m < cardinalita; m++)
{
int contatore = 0;
List<int> vettore = new List<int>();
vettore.Add(m);
vettore.Add(k);
vettore.Add(j);
vettore.Add(i);
foreach (Tentativo tentativo in tentativi)
{
//arrayNumero è un List<int>
confronto(vettore, tentativo.arrayNumero, nCifre, cardinalita, out ris);
if (ris == 20) contatore++;
}
if (contatore == nTent) superstiti.Add(vettore);
}
return superstiti;
}
Do vettore in pasto a ad un metodo chiamato confronto(..) che dopo aver eseguito dei test mi restituisce un valore, out ris.Se questo valore soddisfa una certa condizione allora il numero in vettore viene salvato.
Ora questo algoritmo funziona per numeri di 4 cifre: il mio obbiettivo è che possa funzionare con un numero arbitrario di cifre, il numero di cifre sarebbe passato al metodo selezione quando viene chiamato.
Qualcuno mi saprebbe aiutare?