Es gibt immer die obligatorische LINQ-Implementierung. Wahrscheinlich ist die Leistung miserabel, aber seit wann steht die Leistung der Nutzung cooler neuer Funktionen im Weg?
var letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();
var sequence = from one in letters
from two in letters
from three in letters
from four in letters
orderby one, two, three, four
select new string(new[] { one, two, three, four });
sequence' wird nun ein IQueryable sein, das AAAA bis ZZZZ enthält.
Editar:
Ok, so war es bugging mich, dass es möglich sein sollte, eine Folge von konfigurierbaren Länge mit einem konfigurierbaren Alphabet mit LINQ zu machen. Also hier ist es. Wieder, völlig sinnlos, aber es war mir ein Dorn im Auge.
public void Nonsense()
{
var letters = new[]{"A","B","C","D","E","F",
"G","H","I","J","K","L",
"M","N","O","P","Q","R","S",
"T","U","V","W","X","Y","Z"};
foreach (var val in Sequence(letters, 4))
Console.WriteLine(val);
}
private IQueryable<string> Sequence(string[] alphabet, int size)
{
// create the first level
var sequence = alphabet.AsQueryable();
// add each subsequent level
for (var i = 1; i < size; i++)
sequence = AddLevel(sequence, alphabet);
return from value in sequence
orderby value
select value;
}
private IQueryable<string> AddLevel(IQueryable<string> current, string[] characters)
{
return from one in current
from character in characters
select one + character;
}
Der Aufruf der Methode "Sequence" erzeugt die gleiche Liste von AAAA bis ZZZZ wie zuvor, aber jetzt können Sie das verwendete Wörterbuch und die Länge der erzeugten Wörter ändern.
0 Stimmen
Was wollen Sie damit erreichen? Je nach Ihrer Antwort ist es vielleicht besser, die Liste auf die Schnelle zu erstellen.
0 Stimmen
@John der Statistiker: Iterator-Blöcke verwenden tut die Liste nach und nach erstellen.
0 Stimmen
Dies kann bei der Erstellung einer naiven Brute-Force-Logik nützlich sein. Ich habe einmal etwas Ähnliches für einen Kurs gemacht, in dem wir eine Chiffre knacken mussten. Die analytische Technik war einfach, also habe ich auch ein Programm geschrieben, das an einem frühen Samstagmorgen das gesamte Computerlabor der Hochschule für ein paar Stunden in Anspruch nahm :)