18-12-17, 03:46 AM
أرجو تحويل هذا الكلاس من السي شارب إلى فيجوال بيسك
PHP كود :
class WordGen : IEnumerable<string>
{
private int len;
private List<char> alphabet;
public WordGen(string chars, int length)
{
alphabet = chars.Distinct().ToList();
len = length;
}
private void incString(StringBuilder s, int index, List<char> alphabet)
{
if (s[index] != alphabet.Last())
{
s[index] = alphabet[alphabet.IndexOf(s[index]) + 1];
return;
}
incString(s, index - 1, alphabet);
s[index] = alphabet.First();
}
public IEnumerator<string> GetEnumerator()
{
StringBuilder sb = new StringBuilder(len);
for (int i = 0; i < len; i++)
{
sb.Append(alphabet[0]);
}
while (true)
{
yield return sb.ToString();
incString(sb, len - 1, alphabet);
if (sb.ToString().Distinct().Count() == 1 && sb.ToString().Distinct().Single() == alphabet.Last())
{
yield return sb.ToString();
yield break;
}
}
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}