Es gibt immer die obligatorische LINQ-Implementierung. Wahrscheinlich Quatsch-Performance, aber seit wann hinderte die Performance neue coole Features?
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 });
'Sequenz' wird jetzt ein IQueryable, das AAAA zu ZZZZ enthält.
Edit:
Ok, so war es nervt mich, dass es möglich sein sollte, mit LINQ eine Folge von konfigurierbaren Länge mit einem konfigurierbaren Alphabet zu machen. Hier ist es also. Wiederum völlig sinnlos, aber es nervte mich.
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 Sequenz Methode erzeugt die gleiche AAAA zu ZZZZ Liste wie vorher, aber jetzt können Sie das Wörterbuch ändern verwendet und wie lange die erzeugten Worte sein werden.
erzeugt Was Sie versuchen zu tun? Es könnte besser sein, die Liste abhängig von Ihrer Antwort zu erstellen. –
@John the Statistician: Die Verwendung von Iteratorblöcken * erzeugt * die Liste träge. –
Dies kann beim Erstellen von naiven Brute-Force-Logik nützlich sein. Ich habe etwas Ähnliches für eine Klasse gemacht, einmal, wo wir eine Chiffre brechen mussten. Die analytische Technik war einfach, also schrieb ich auch ein Programm, das das ganze Computerlabor für ein paar Stunden am frühen Samstagmorgen verwendete. :) –