Бесконечно перечислять все возможные комбинации из английского алфавита - C#

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

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

Пишу небольшую консольную программу, которая должна бесконечно перечислять все возможные комбинации из английского алфавита. Но почему то, оно не работает: окно пустое. Можете помочь?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace NBProject
{
    class Program
    {
        static string[] totalarray = new string[26] { "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" };
 
        static void Main(string[] args)
        {
            while (true)
            {
                var totallist = new List<string>(totalarray);
                var allcombi = allcombinations(totallist, new List<string>());
                foreach (var lst in allcombi)
                    output(lst);
 
            }
        }
 
        private static IEnumerable<List<string>> allcombinations(List<string> arg, List<string> awithout)
        {
            if (arg.Count == 1)
            {
                var result = new List<List<string>>();
                result.Add(new List<string>());
                result[0].Add(arg[0]);
                return result;
            }
            else
            {
                var result = new List<List<string>>();
 
                foreach (var first in arg)
                {
                    var others0 = new List<string>(arg.Except(new string[1] { first }));
                    awithout.Add(first);
                    var others = new List<string>(others0.Except(awithout));
 
                    var combinations = allcombinations(others, awithout);
                    awithout.Remove(first);
 
                    foreach (var tail in combinations)
                    {
                        tail.Insert(0, first);
                        result.Add(tail);
                    }
                }
                return result;
            }
        }
        private static void output(IEnumerable<string> arg)
        {
            foreach (var str in arg)
                Console.Write(str);
            Console.WriteLine();
        }
    }
}

Решение задачи: «Бесконечно перечислять все возможные комбинации из английского алфавита»

textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace ConsoleApplication1
{
    class Program
    {
        static string[] totalarray = new string[4] { "a", "b", "c", "d" };
 
        static void Main(string[] args)
        {
            var totallist = new List<string>(totalarray);
            var allcombi = allcombinations(totallist, new List<string>());
            foreach (var lst in allcombi)
                output(lst);
 
            Console.ReadKey();
 
        }
        
        private static IEnumerable<List<string>> allcombinations(List<string> arg, List<string> awithout)
        {
            if (arg.Count == 1)
            {
                var result = new List<List<string>>();
                result.Add(new List<string>());
                result[0].Add(arg[0]);
                return result;
            }
            else
            {
                var result = new List<List<string>>();
                
                foreach (var first in arg)
                {
                    var others0 = new List<string>(arg.Except(new string[1] { first }));
                    awithout.Add(first);
                    var others = new List<string>(others0.Except(awithout));
                    
                    var combinations = allcombinations(others, awithout);
                    awithout.Remove(first);
 
                    foreach (var tail in combinations)
                    {
                        tail.Insert(0, first);
                        result.Add(tail);
                    }
                }
                return result;
            }
        }
        private static void output(IEnumerable<string> arg)
        {
            foreach (var str in arg)
                Console.Write(str);
            Console.WriteLine();
        }
    }
}

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


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

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

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