Hacemos una verificación exhaustiva cada reseña de nuestra web con la meta de mostrarte en todo momento información certera y actualizada.
Para una cantidad variable de combinaciones de letras, puede hacer lo siguiente:
var alphabet = "abcdefghijklmnopqrstuvwxyz";
var q = alphabet.Select(x => x.ToString());
int size = 4;
for (int i = 0; i < size - 1; i++)
q = q.SelectMany(x => alphabet, (x, y) => x + y);
foreach (var item in q)
Console.WriteLine(item);
var alphabet = "abcdefghijklmnopqrstuvwxyz";
//or var alphabet = Enumerable.Range('a', 'z' - 'a' + 1).Select(i => (char)i);
var query = from a in alphabet
from b in alphabet
from c in alphabet
select "" + a + b + c;
foreach (var item in query)
Console.WriteLine(item);
__EDITAR__
Para una solución general, puede usar el producto cartesiano aquí
int N = 4;
var result = Enumerable.Range(0, N).Select(_ => alphabet).CartesianProduct();
foreach (var item in result)
Console.WriteLine(String.Join("",item));
// Eric Lippert’s Blog
// Computing a Cartesian Product with LINQ
// http://blogs.msdn.com/b/ericlippert/archive/2010/06/28/computing-a-cartesian-product-with-linq.aspx
public static IEnumerable> CartesianProduct(this IEnumerable> sequences)
// base case:
IEnumerable> result = new[] Enumerable.Empty() ;
foreach (var sequence in sequences)
var s = sequence; // don't close over the loop variable
// recursive case: use SelectMany to build the new product out of the old one
result =
from seq in result
from item in s
select seq.Concat(new[] item );
return result;
Aquí hay una solución muy simple:
for(char first = 'a'; first <= (int)'z'; first++)
for(char second = 'a'; second <= (int)'z'; second++)
for(char third = 'a'; third <= (int)'z'; third++)
Console.WriteLine(first.ToString() + second + third);
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)