17 / 11 / 3
Регистрация: 25.02.2013
Сообщений: 48
1

Генерация строки

22.03.2013, 08:08. Показов 1814. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!

Мне необходимо сгенерировать массив строк из данного набора букв (все комбинации друг с другом).

Сейчас я делаю это в циклах, т.е. если строка состоит из 4 букв то это 4 цикла и т.д. А мне нужно динамически выбирать длинну строки и при этом результат должен быть корректный.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.03.2013, 08:08
Ответы с готовыми решениями:

Генерация кнопок из строки текста используя массиф
Здравствуйте, уважаемые форумчане, работаю над проектом, и встретился с такой проблемой, нужно из...

Генерация строки из списка
Привет всем. Написал я функцию для генерации запроса для подсчета количества по фильтру. Но заметил...

Генерация строки заданного формата
Здарова всем! Помогите пожалуйста, мне нужно, что бы при нажатии кнопки на панеле генерировался...

Генерация случайной строки
Привет ребят, можно ли совета, помощи по созданию оконной аппликации которая создает рандомные...

7
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
22.03.2013, 08:23 2
Покажи код, что ты там делаешь глянуть.
0
17 / 11 / 3
Регистрация: 25.02.2013
Сообщений: 48
22.03.2013, 08:27  [ТС] 3
Main:
C#
1
2
3
var chars = new List<char> { 'р', 'т', 'ч', 'м', 'а', 'а', 'я', 'и', 'у', 'и', 'з', 'е', 'к', 'ь'};
 
var words = WordGenerator.Generate(chars);
WordGenerator:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public static List<string> Generate(List<char> chars)
        {
            var result = new List<string>();
 
            for (int i = 0; i < chars.Count; i++)
            {
                for (int j = 0; j < chars.Count; j++)
                {
                    if (i != j)
                    {
                        for (int k = 0; k < chars.Count; k++)
                        {
                            if (k != i && k != j)
                            {
                                for (int l = 0; l < chars.Count; l++)
                                {
                                    if (l != i && l != j && l != k)
                                    {
                                        result.Add(String.Format("{0}{1}{2}{3}", 
                                            chars[i].ToString().ToUpper(), chars[j], chars[k], chars[l]));
                                    }
                                }
                            }
                        }
                    }
                }
            }
 
            return result;
        }
0
Эксперт .NET
4432 / 2092 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
22.03.2013, 08:34 4
Затестил, генерирует не все возможные варианты.
0
17 / 11 / 3
Регистрация: 25.02.2013
Сообщений: 48
22.03.2013, 08:36  [ТС] 5
Ну я тут некоторые отсеиваю, что бы одна и та же буква в слове один раз использовалась. Проверки убрать и все будет
Это строка из 4 ех букв, а мне нужно задавать размер строки динамически.
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
22.03.2013, 10:17 6
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
using System;
using System.Collections.Generic;
using System.Linq;
 
namespace ConsoleApplication6
{
    class Program
    {
        static void Main()
        {
            const string input = "abcd";
            var gen = Generate(input);
            foreach (string s in gen)
            {
                Console.WriteLine(s);
            }
            Console.ReadKey();
        }
        
        private static IEnumerable<string> Generate(string s)
        {
            return PowerSet(s).Select(x => new string(x.ToArray()));
        }
 
        static IEnumerable<IEnumerable<T>> PowerSet<T>(IEnumerable<T> initialSet)
        {
            var set = new List<IEnumerable<T>>() { Enumerable.Empty<T>() };
            return initialSet.Aggregate((IEnumerable<IEnumerable<T>>)set, (x, y) => x.Concat(x.Select(z => z.Concat(new List<T>() { y }))));
        }
    }
}
код нахождения булеана сперт отсюда: Операции с множествами
1
17 / 11 / 3
Регистрация: 25.02.2013
Сообщений: 48
22.03.2013, 10:55  [ТС] 7
Спасибо за ответ. Как в вашем примере задать число букв в сгенерированной строке. У меня вхлдящих букв очень много, а получить нужно строки гораздо меньшим размером.
0
Master of Orion
Эксперт .NET
6098 / 4954 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
22.03.2013, 11:59 8
KIA_1990,
C#
1
 var gen = Generate(input).Where(x=>x.Length == n);
0
22.03.2013, 11:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.03.2013, 11:59
Помогаю со студенческими работами здесь

Генерация формулы из строки
Здравсвуйте. Предположим в textBox ввели x+x&quot;+13, программа должна сгенерировать эту формулу(...

Генерация строки
Есть ли функция для генерации рандомной строки из символов или нужно самому такое счастье написать?

Генерация строки
У меня есть строка String testId = &quot;55&quot;; И есть ресурс R.id.logo55 Мне надо чтобы в конечном...

Генерация строки
(заранее извиняюсь за тупой вопрос) Здравствуйте, нужен ваш совет. Подскажите способ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru