Advertisement
Willcode4cash

Better permutation refactoring

Jul 26th, 2017
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 0.57 KB | None | 0 0
  1. void Main()
  2. {
  3.     var charString = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567890!@#$%^&*()_-+=}{][?/><,.";
  4.     var charList = charString.ToCharArray().Select(c => c.ToString()).AsEnumerable();
  5.  
  6.     IEnumerable<IEnumerable<string>> result = GetPermutations(charList, 8);
  7. }
  8.  
  9. static IEnumerable<IEnumerable<T>> GetPermutations<T>(IEnumerable<T> list, int length)
  10. {
  11.     if (length == 1) return list.Select(t => new T[] { t });
  12.  
  13.     return GetPermutations(list, length - 1)
  14.         .SelectMany(t => list.Where(e => !t.Contains(e)),
  15.             (t1, t2) => t1.Concat(new T[] { t2 }));
  16. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement