Произвольная глубина вложенного цикла - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. Прошу о помощи, балуюсь с брутфорсом и подобными штуками, необходимо установить глубину вложенных циклов равной длине алфавита. Вот что имею на данный момент.
            char[] alph =new char[]{ '1', '2', '3' };
            while (boolscore)
            {
                for (int i = 0; i < alph.Length; i++)
                {
                    for (int j = 0; j < alph.Length; j++)
                    {
                        for (int m = 0; m < alph.Length; m++)
                        {
                            Spass = alph[i].ToString() + alph[j].ToString() + alph[m].ToString();
                            proc.StartInfo.Arguments = Spass;
                            proc.Start();
                            System.Threading.Thread.Sleep(50);
                            if (!File.Exists("C:\\Users\\П\\Desktop\\bf\\ok.txt"))
                            {
                                Console.WriteLine("Неудача номер {0} : {1}", score, Spass);
                                score++;
                            }
                            else
                            {
                                File.Delete("C:\\Users\\П\\Desktop\\bf\\ok.txt");
                                Console.WriteLine("Пароль {0} найден с {1} попытки", Spass, score);
                                boolscore = false;
                                return;
                            }
                            try
                            {
                                proc.Kill();
                            }
                            catch (Exception)
                            {
                            }
                        }
                    }
                }
            }
Цель оптимизировать этот фрагмент:
                for (int i = 0; i < alph.Length; i++)
                {
                    for (int j = 0; j < alph.Length; j++)
                    {
                        for (int m = 0; m < alph.Length; m++)
                        {
                            Spass = alph[i].ToString() + alph[j].ToString() + alph[m].ToString();
Заранее спасибо за уделенное внимание.

Решение задачи: «Произвольная глубина вложенного цикла»

textual
Листинг программы
using System;
using System.Linq;
using System.Collections.Generic;
 
class Program
{
    public static void Main()
    {
        char[] alphabet = "abracadabra".Distinct().ToArray();
        Queue<string> q = new Queue<string>();
        q.Enqueue(String.Empty);
        string password;
        while ((password = q.Dequeue()) != "abracadabra")
        {
            foreach (char ch in alphabet)
            {
                q.Enqueue(password + ch);
            }
        }
        Console.WriteLine(password);
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.091 из 5
Похожие ответы