fork(2) download
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. static class Program
  6. {
  7. private static void Main(string[] args)
  8. {
  9. "foo".ToCharArray().Permutate().ForEach(Console.WriteLine);
  10. "abbccc".ToCharArray().Permutate().ForEach(Console.WriteLine);
  11.  
  12. Console.Read();
  13. }
  14.  
  15. public static List<string> Permutate(this IEnumerable<char> s)
  16. {
  17. return s.SelectMany(x =>
  18. {
  19. var index = Array.IndexOf(s.ToArray(), x);
  20. return
  21. s.Where((y, i) => i != index)
  22. .Permutate()
  23. .Select(y => new string(new[] {x}.Concat(y).ToArray()))
  24. .Union(new[] {new string(new[] {x})});
  25. }).Distinct().Where(x => x.Length == s.Count()).ToList();
  26. }
  27. }
  28.  
  29.  
Success #stdin #stdout 0.09s 34272KB
stdin
Standard input is empty
stdout
foo
ofo
oof
abbccc
abcbcc
abccbc
abcccb
acbbcc
acbcbc
acbccb
accbbc
accbcb
acccbb
babccc
bacbcc
baccbc
bacccb
bbaccc
bbcacc
bbccac
bbccca
bcabcc
bcacbc
bcaccb
bcbacc
bcbcac
bcbcca
bccabc
bccacb
bccbac
bccbca
bcccab
bcccba
cabbcc
cabcbc
cabccb
cacbbc
cacbcb
caccbb
cbabcc
cbacbc
cbaccb
cbbacc
cbbcac
cbbcca
cbcabc
cbcacb
cbcbac
cbcbca
cbccab
cbccba
ccabbc
ccabcb
ccacbb
ccbabc
ccbacb
ccbbac
ccbbca
ccbcab
ccbcba
cccabb
cccbab
cccbba