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.
>
>
>
>

Responder a