Sono riuscito a trovare del codice e a riadattarlo
questo calcola gli indicatori
public static ArrayList calcolaIndici(ArrayList linearSet, int k)
{
if (linearSet == null || k > linearSet.Count || k < 0)
throw new ArgumentException();
ArrayList toReturn = new ArrayList();
if (k == 0) return toReturn;
int[] indexes = new int[k];
indexes[0] = 0;
int i = 0;
while (i >= 0)
{
while (i++ < indexes.Length - 1)
indexes[i] = indexes[i - 1] + 1;
ArrayList toAdd = new ArrayList();
for (i = 0; i < k; i++)
toAdd.Add(indexes[i]);
toReturn.Add(toAdd);
i = indexes.Length - 1;
while (i >= 0 && ++indexes[i] == linearSet.Count - (indexes.Length - i - 1))
i--;
}
return toReturn;
}
una volta aggiunti i controlli per vedere se la mano è vincente o meno il tutto ci inpiega circa 10 secondi mentre i programmi che ho visto ci mettono meno di un secondo penso che per velocizzarlo dovrei usare delle matrici di int purtroppo non sono praticissimo delle matrici in c#