Willcode4cash icon

Better permutation refactoring

Willcode4cash | PRO | 07/26/17 04:24:20 PM UTC | 0 ⭐ | 300 👁️ | Never ⏰ | []
C# |

570 B

|

None

|

0 👍

/

0 👎

void Main()
{
    var charString = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890!@#$%^&*()_-+=}{][?/><,.";
    var charList = charString.ToCharArray().Select(c => c.ToString()).AsEnumerable();
 
    IEnumerable<IEnumerable<string>> result = GetPermutations(charList, 8);
}
 
static IEnumerable<IEnumerable<T>> GetPermutations<T>(IEnumerable<T> list, int length)
{
    if (length == 1) return list.Select(t => new T[] { t });
 
    return GetPermutations(list, length - 1)
        .SelectMany(t => list.Where(e => !t.Contains(e)),
            (t1, t2) => t1.Concat(new T[] { t2 }));
}

Comments