Esto mismo se podría extender a cualquier tipo de datos, simplemente recibiendo un IEnumerable<T> y devolviendo un IEnumerable<IEnumerable<T>>
2011/9/14 Jose Selesan <[email protected]> > Hola Tomás. Con una simple recursividad lo podés resolver: > > private IEnumerable<string> Permutaciones(IEnumerable<string> lista) > { > if (lista.Count() == 1) return lista; > var resultado = new List<string>(); > foreach (var elemento in lista) > { > var listaPermutada = Permutaciones(lista.Where(t => > !t.Equals(elemento))); > foreach(var permutacion in listaPermutada) > resultado.Add(elemento + permutacion); > } > return resultado; > } > > Saludos > Lic. José Selesan > > > 2011/9/14 Tomás Corrales Lemoine <[email protected]> > >> Hola colegas.**** >> >> ** ** >> >> ¿Alguien me podría ayudar con algún algoritmo para obtener todas las >> permutaciones posibles de un conjunto finito cualquiera? Por ejemplo, para >> el conjunto de 4 elementos ABCD las posibles permutaciones serían:**** >> >> ** ** >> >> **1. **ABCD**** >> >> **2. **ABDC**** >> >> **3. **ACBD**** >> >> **4. **ACDB**** >> >> **5. **ADBC**** >> >> **6. **ADCB**** >> >> **7. **BACD**** >> >> **8. **BADC**** >> >> **9. **BCAD**** >> >> **10. **BCDA**** >> >> **11. **BDAC**** >> >> **12. **BDCA**** >> >> **13. **CABD**** >> >> **14. **CADB**** >> >> **15. **CBAD**** >> >> **16. **CBDA**** >> >> **17. **CDAB**** >> >> **18. **CDBA**** >> >> **19. **DABC**** >> >> **20. **DACB**** >> >> **21. **DBAC**** >> >> **22. **DBCA**** >> >> **23. **DCAB**** >> >> **24. **DCBA**** >> >> ** ** >> >> Es decir, la cantidad de permutaciones sería igual al factorial de la >> cantidad de elementos del conjunto. En este caso 4! = 4 x 3 x 2 x 1 = 24. >> Agradecería cualquier sugerencia. Gracias.**** >> >> ** ** >> >> Saludos**** >> >> ** ** >> >> Ing. Tomás Corrales Lemoine**** >> >> -- >> Aeropuerto Internacional Frank País García de Holguín. > > > >
