flx2000
13-01-2010, 16:42
Ciao a tutti,
da un po' di giorni mi sto cimentando col C#. La mia esperienza è molto approfondita in fatto di programmazione ad oggetti, ma sono specializzato nel mondo open source (PHP, Python, Perl, ecc.).
Nel caso specifico, non riesco a creare un metodo che mi restituisca la lista di tutte le possibili combinazioni degli elementi di un array.
Ad esempio, supponiamo che io abbia la lista così ottenuta:
Oggetto A = new Oggetto();
Oggetto B = new Oggetto();
Oggetto C = new Oggetto();
List<Oggetto> lista = new List<Oggetto>();
lista.Add(A);
lista.Add(B);
lista.Add(C);
Quello che vorrei avere adesso è una lista che contenga una sottolista per ognuna delle possibili combinazioni degli oggetti di questa lista.
Insomma, mi occorre una lista di liste ognuna delle quali è composta da n oggetti in modo da avere tutte e 8 le possibili combinazioni di quei tre oggetti:
lista[0] = {A};
lista[1] = {A, B};
lista[2] = {A, C};
lista[3] = {A, B, C};
lista[4] = {B};
lista[5] = {B, C};
lista[6] = {C};
lista[7] = {};
Immagino che il problema sia risolvibile con una funzione ricorsiva, magari sfruttando la funzionalità yield di C#, ma attualmente non riesco a risolvere questo problema.
Grazie a chiunque conosca una formula standard o voglia aiutarmi in qualche modo, considerando che ovviamente il numero di elementi non sarà sempre 3 ma un numero che potrebbe essere diverso di volta in volta.
da un po' di giorni mi sto cimentando col C#. La mia esperienza è molto approfondita in fatto di programmazione ad oggetti, ma sono specializzato nel mondo open source (PHP, Python, Perl, ecc.).
Nel caso specifico, non riesco a creare un metodo che mi restituisca la lista di tutte le possibili combinazioni degli elementi di un array.
Ad esempio, supponiamo che io abbia la lista così ottenuta:
Oggetto A = new Oggetto();
Oggetto B = new Oggetto();
Oggetto C = new Oggetto();
List<Oggetto> lista = new List<Oggetto>();
lista.Add(A);
lista.Add(B);
lista.Add(C);
Quello che vorrei avere adesso è una lista che contenga una sottolista per ognuna delle possibili combinazioni degli oggetti di questa lista.
Insomma, mi occorre una lista di liste ognuna delle quali è composta da n oggetti in modo da avere tutte e 8 le possibili combinazioni di quei tre oggetti:
lista[0] = {A};
lista[1] = {A, B};
lista[2] = {A, C};
lista[3] = {A, B, C};
lista[4] = {B};
lista[5] = {B, C};
lista[6] = {C};
lista[7] = {};
Immagino che il problema sia risolvibile con una funzione ricorsiva, magari sfruttando la funzionalità yield di C#, ma attualmente non riesco a risolvere questo problema.
Grazie a chiunque conosca una formula standard o voglia aiutarmi in qualche modo, considerando che ovviamente il numero di elementi non sarà sempre 3 ma un numero che potrebbe essere diverso di volta in volta.