powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / алгоритм последовательной генерации строк aaa-zzz
25 сообщений из 70, страница 1 из 3
алгоритм последовательной генерации строк aaa-zzz
    #36687704
fleandr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что то я туплю. как правильно сделать сабж.(можно просто строчку из числ кодов)
вариант вида

for(i1=0;i1<26;++i1)
for(i2=0;i2<26;++i2)
for(i3=0;i3<26;++i3)
{
a=i1+i2+i3; // объединяем результат
f(a) //используем...
}
не нравится

придумал вариант вида
for(i=0;i<26*26*26;++i)
{
считаем скока надо остаток от деления на 26
}
но тоже не нравится. плюс что делать если надо генерить варианты 20 символьных строк.

Как правильно сделать? туплю жестоко...
...
Рейтинг: 0 / 0
алгоритм последовательной генерации строк aaa-zzz
    #36687711
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тебя смущает 20 вложенных циклов или невозможность параметризировать количество циклов?
...
Рейтинг: 0 / 0
алгоритм последовательной генерации строк aaa-zzz
    #36687732
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перейди в систему счисления по основанию 26.
...
Рейтинг: 0 / 0
алгоритм последовательной генерации строк aaa-zzz
    #36687749
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
три вложенных цикла нормально. Не нужны эти джедайские методики с делением и остатком.
Понимать код будет гораздо проще
...
Рейтинг: 0 / 0
алгоритм последовательной генерации строк aaa-zzz
    #36687757
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fleandr,

напиши рекурсивно
...
Рейтинг: 0 / 0
алгоритм последовательной генерации строк aaa-zzz
    #36687761
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хотя для 3-х циклов, это лишнее.
я тоже думаю что 1-й вариант нормальный.
...
Рейтинг: 0 / 0
алгоритм последовательной генерации строк aaa-zzz
    #36687795
fleandr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rstudio,

20 вложенных циклов это бяка...
я почти понял как сделать
http://www.insidepro.com/doc/003r.shtml

в общем надо:
1)сгенерить исходную строку.
2)пока не сдохнем
3)инкрементировать первый символ.
4)если код символа стал >27 сделать перенос и распространить его сколько надо

наверно это оптимальный алгоритм
...
Рейтинг: 0 / 0
алгоритм последовательной генерации строк aaa-zzz
    #36687804
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fleandrrstudio,

20 вложенных циклов это бяка...
я почти понял как сделать
http://www.insidepro.com/doc/003r.shtml

в общем надо:
1)сгенерить исходную строку.
2)пока не сдохнем
3)инкрементировать первый символ.
4)если код символа стал >27 сделать перенос и распространить его сколько надо

наверно это оптимальный алгоритм

не понял, а зачем там 20 вложенных циклов ?
длина строки может менятся ?
...
Рейтинг: 0 / 0
алгоритм последовательной генерации строк aaa-zzz
    #36687816
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, тогда можно рекурсивно
...
Рейтинг: 0 / 0
алгоритм последовательной генерации строк aaa-zzz
    #36687819
fleandr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
считай длину строки параметром
я просто не могу смотреть на 12 вложенных циклов в коде
...
Рейтинг: 0 / 0
алгоритм последовательной генерации строк aaa-zzz
    #36687843
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rstudioда, тогда можно рекурсивно

только при рекурсивном(не в ленивых языках) придется выделять память, под весь список.
а хаскелл, ИМХО, нормально бы справился с задачей.
...
Рейтинг: 0 / 0
алгоритм последовательной генерации строк aaa-zzz
    #36687860
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fleandr
в общем надо:
1)сгенерить исходную строку.
2)пока не сдохнем
3)инкрементировать первый символ.
4)если код символа стал >27 сделать перенос и распространить его сколько надо

наверно это оптимальный алгоритм
Всё верно. Если ты изучал ЦУ и МПС, то так работает сумматор. Только для оптимизации несколько двоичных разрядов объединяются в группы и суммирование групп происходит шифратором (или дешифратором не помню но это непринципиально). Это самый быстрый метод сложения двух двоичных чисел в природе. Быстрее не бывает. Его можно еще упростить, взяв за правило, что второе слагаемое всегда будет равно единице и схема сумматора упроститься. Сумматор можно сгенерить искусственно исходя из введённого параметра N=20 (к примеру). А каждая цифра сумматора будет 5-битной (как раз для кодирования) букв алвавита. Генерацию сумматора надо-бы делать динамической компилляцией. Но в этом сабже я не силён, особенно в если язык не С# и не Java.
...
Рейтинг: 0 / 0
алгоритм последовательной генерации строк aaa-zzz
    #36687864
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
рекурсионный нормально. Вот в этом примере перебираются все слова с длиной на 5 символов и алфавитом в 6 символов.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
        private void Form1_Load(object sender, EventArgs e)
        {
            char[] alphabet = new char[]{'a', 'b', 'c', 'd', 'e', 'f'};
            List<string> list = new List<string>();

            this.F(alphabet, list, "",  0 ,  5 );
        }

        void F(char[] alphabet, List<string> list, string word, int level, int wordLength)
        {
            if (level < wordLength)
            {
                foreach(char c in alphabet)
                    F(alphabet, list, word + c, level +  1 , wordLength);
            }
            else
            {
                list.Add(word);
            }
        }

...
Рейтинг: 0 / 0
алгоритм последовательной генерации строк aaa-zzz
    #36687866
fleandr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
рекурсивно написал:
но вот память кушает хотя и немного...
интересно а все таки как быстрее
public static string symbols = "abcdefghijklmnop";

public static string growstr(string s)
{
if (s.Length == 5)
{
Console.WriteLine(s);
return "";
}
else
{
string res = "";
for (int i = 0; i < 10; ++i)
{
res =s+ symbols[i];
res = growstr(res);
}
return res;
}

}
...
Рейтинг: 0 / 0
алгоритм последовательной генерации строк aaa-zzz
    #36687907
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rstudioрекурсионный нормально. Вот в этом примере перебираются все слова с длиной на 5 символов и алфавитом в 6 символов.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
        private void Form1_Load(object sender, EventArgs e)
        {
            char[] alphabet = new char[]{'a', 'b', 'c', 'd', 'e', 'f'};
            List<string> list = new List<string>();

            this.F(alphabet, list, "",  0 ,  5 );
        }

        void F(char[] alphabet, List<string> list, string word, int level, int wordLength)
        {
            if (level < wordLength)
            {
                foreach(char c in alphabet)
                    F(alphabet, list, word + c, level +  1 , wordLength);
            }
            else
            {
                list.Add(word);
            }
        }



ключевое место, ты накапливаешь все элементы.
а нужно, вызвать процедуру для каждого.
...
Рейтинг: 0 / 0
алгоритм последовательной генерации строк aaa-zzz
    #36687944
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это большая проблема ?
У меня универсальная функция, ее можно запаковать в библиотеку.
Передаешь алфавит, длину слова и она возвращает все возможные вариации слов по этому алфавиту.
...
Рейтинг: 0 / 0
алгоритм последовательной генерации строк aaa-zzz
    #36687947
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaNrstudioда, тогда можно рекурсивно

только при рекурсивном(не в ленивых языках) придется выделять память, под весь список.
а хаскелл, ИМХО, нормально бы справился с задачей.

Опять начинается, Хаскелл, Лисп ... там где за три минуты в 5 строчек кода пишется на шарпе
...
Рейтинг: 0 / 0
алгоритм последовательной генерации строк aaa-zzz
    #36687951
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все мы поняли, что когда речь идет о коротком понятном коде, все Лисперы копируют под кальку шарповый код и удаляют декларации. Возможны птицы высоты полета Ксени выдали нам бы что получше, но пока такой расклад по палатам
...
Рейтинг: 0 / 0
алгоритм последовательной генерации строк aaa-zzz
    #36687954
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rstudioZyK_BotaNrstudioда, тогда можно рекурсивно

только при рекурсивном(не в ленивых языках) придется выделять память, под весь список.
а хаскелл, ИМХО, нормально бы справился с задачей.

Опять начинается, Хаскелл, Лисп ... там где за три минуты в 5 строчек кода пишется на шарпе

я согласен, что решение с циклом самое лучшее.
я лишь сказал что рекурсия себя может быть приемлемой только для ленивого языка, и то уже начал в этом сомневаться.
...
Рейтинг: 0 / 0
алгоритм последовательной генерации строк aaa-zzz
    #36687960
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rstudioЭто большая проблема ?
У меня универсальная функция, ее можно запаковать в библиотеку.
Передаешь алфавит, длину слова и она возвращает все возможные вариации слов по этому алфавиту.

функция то универсальная, но поставленную задачу решает плохо.
а если нужно вызвать процедуру для всех элементов с двадцатью порядками? памяти то хватит.

а решение с циклом, будет работать долго, но память не съест.
...
Рейтинг: 0 / 0
алгоритм последовательной генерации строк aaa-zzz
    #36687963
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rstudioвсе мы поняли, что когда речь идет о коротком понятном коде, все Лисперы копируют под кальку шарповый код и удаляют декларации. Возможны птицы высоты полета Ксени выдали нам бы что получше, но пока такой расклад по палатам

причем здесь лисп и декларации?
я лишь предположил, что в ленивом хаскелле, рекурсивный алгоритм сможет выполнится с использованием малого объема памяти.
...
Рейтинг: 0 / 0
алгоритм последовательной генерации строк aaa-zzz
    #36687970
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaN
а решение с циклом, будет работать долго, но память не съест.

долго это примерно сколько ...
Давай посчитаем точно, допустим один миллиард комбинаций в секунду на самом мощном компьютере в мире. Получается ... 231 481 дней ... но памяти сожрет немного ....

зачем эти громкие слова ?
...
Рейтинг: 0 / 0
алгоритм последовательной генерации строк aaa-zzz
    #36687985
Фотография ZyK_BotaN
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rstudioZyK_BotaN
а решение с циклом, будет работать долго, но память не съест.

долго это примерно сколько ...
Давай посчитаем точно, допустим один миллиард комбинаций в секунду на самом мощном компьютере в мире. Получается ... 231 481 дней ... но памяти сожрет немного ....

зачем эти громкие слова ?

ну с 20-ю я загнул.
но зачем же придираться к мелочам?
смысл я надеюсь понятен, что итеративный алгоритм использует мало памяти, а рекурсивный ее жрет, и при этом скорости не добавляет. Наоборот требует выделения\освобождение памяти.
...
Рейтинг: 0 / 0
алгоритм последовательной генерации строк aaa-zzz
    #36687988
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaNrstudioвсе мы поняли, что когда речь идет о коротком понятном коде, все Лисперы копируют под кальку шарповый код и удаляют декларации. Возможны птицы высоты полета Ксени выдали нам бы что получше, но пока такой расклад по палатам

причем здесь лисп и декларации?
я лишь предположил, что в ленивом хаскелле, рекурсивный алгоритм сможет выполнится с использованием малого объема памяти.

Теория нам говорит. Что любой рекурсивный алгоритм можно переписать итеративно.
Просто на 95% я уверен что это не нужно ТС. Оптимизировать нужно только тогда, когда это критично.
...
Рейтинг: 0 / 0
алгоритм последовательной генерации строк aaa-zzz
    #36687991
rstudio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZyK_BotaNrstudioZyK_BotaN
а решение с циклом, будет работать долго, но память не съест.

долго это примерно сколько ...
Давай посчитаем точно, допустим один миллиард комбинаций в секунду на самом мощном компьютере в мире. Получается ... 231 481 дней ... но памяти сожрет немного ....

зачем эти громкие слова ?

ну с 20-ю я загнул.
но зачем же придираться к мелочам?
смысл я надеюсь понятен, что итеративный алгоритм использует мало памяти, а рекурсивный ее жрет, и при этом скорости не добавляет. Наоборот требует выделения\освобождение памяти.

Рекурсивный памяти совершенно не жрет. В рекурсионных алгоритмах есть недостаток, они не могут разворачиваться "бесконечно". Стек не резиновый. Но вложенность в 100 вызовов функций, вполне может быть. Здесь же рекурсионный алгоритм разворачивается на длину слова, что весьма приемлимо.
...
Рейтинг: 0 / 0
25 сообщений из 70, страница 1 из 3
Форумы / Программирование [игнор отключен] [закрыт для гостей] / алгоритм последовательной генерации строк aaa-zzz
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]