Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private HashSet<string> GenerarPermutacionParcial(string word)
- {
- return new HashSet<string>(
- Enumerable.Range(0, word.Length)
- .Select(i => word.Remove(i, 1).Insert(0, word[i].ToString())));
- } // abcd, bacd, cacd, dabc
- void Main()
- {
- // Generación de las primeras permutaciones parciales:
- HashSet<string> perms = GenerarPermutacionParcial("abcd");
- Enumerable.Range(0, 2)
- .ToList()
- .ForEach(
- c =>
- {
- // Permutaciones en sentido izquierda derecha:
- Enumerable.Range(0, perms.Count())
- .ToList()
- .ForEach
- (
- i => GenerarPermutacionParcial(
- perms.ElementAt(i))
- .ToList()
- .ForEach(p => perms.Add(p))
- );
- // Permutaciones en sentido contrario:
- Enumerable.Range(0, perms.Count())
- .ToList()
- .ForEach
- (
- i => GenerarPermutacionParcial(
- new String(perms.ElementAt(i).ToCharArray()
- .Reverse().ToArray())
- )
- .ToList().ForEach(p => perms.Add(p)));
- }
- );
- perms.OrderBy(p => p).Dump("Permutaciones de 'abcd'");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement