|
|
|
алгоритм последовательной генерации строк aaa-zzz
|
|||
|---|---|---|---|
|
#18+
Что то я туплю. как правильно сделать сабж.(можно просто строчку из числ кодов) вариант вида 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 символьных строк. Как правильно сделать? туплю жестоко... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2010, 14:16:59 |
|
||
|
алгоритм последовательной генерации строк aaa-zzz
|
|||
|---|---|---|---|
|
#18+
Тебя смущает 20 вложенных циклов или невозможность параметризировать количество циклов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2010, 14:20:08 |
|
||
|
алгоритм последовательной генерации строк aaa-zzz
|
|||
|---|---|---|---|
|
#18+
Перейди в систему счисления по основанию 26. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2010, 14:25:45 |
|
||
|
алгоритм последовательной генерации строк aaa-zzz
|
|||
|---|---|---|---|
|
#18+
три вложенных цикла нормально. Не нужны эти джедайские методики с делением и остатком. Понимать код будет гораздо проще ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2010, 14:29:26 |
|
||
|
алгоритм последовательной генерации строк aaa-zzz
|
|||
|---|---|---|---|
|
#18+
fleandr, напиши рекурсивно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2010, 14:31:16 |
|
||
|
алгоритм последовательной генерации строк aaa-zzz
|
|||
|---|---|---|---|
|
#18+
хотя для 3-х циклов, это лишнее. я тоже думаю что 1-й вариант нормальный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2010, 14:32:17 |
|
||
|
алгоритм последовательной генерации строк aaa-zzz
|
|||
|---|---|---|---|
|
#18+
rstudio, 20 вложенных циклов это бяка... я почти понял как сделать http://www.insidepro.com/doc/003r.shtml в общем надо: 1)сгенерить исходную строку. 2)пока не сдохнем 3)инкрементировать первый символ. 4)если код символа стал >27 сделать перенос и распространить его сколько надо наверно это оптимальный алгоритм ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2010, 14:37:15 |
|
||
|
алгоритм последовательной генерации строк aaa-zzz
|
|||
|---|---|---|---|
|
#18+
fleandrrstudio, 20 вложенных циклов это бяка... я почти понял как сделать http://www.insidepro.com/doc/003r.shtml в общем надо: 1)сгенерить исходную строку. 2)пока не сдохнем 3)инкрементировать первый символ. 4)если код символа стал >27 сделать перенос и распространить его сколько надо наверно это оптимальный алгоритм не понял, а зачем там 20 вложенных циклов ? длина строки может менятся ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2010, 14:38:59 |
|
||
|
алгоритм последовательной генерации строк aaa-zzz
|
|||
|---|---|---|---|
|
#18+
да, тогда можно рекурсивно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2010, 14:41:46 |
|
||
|
алгоритм последовательной генерации строк aaa-zzz
|
|||
|---|---|---|---|
|
#18+
считай длину строки параметром я просто не могу смотреть на 12 вложенных циклов в коде ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2010, 14:42:02 |
|
||
|
алгоритм последовательной генерации строк aaa-zzz
|
|||
|---|---|---|---|
|
#18+
rstudioда, тогда можно рекурсивно только при рекурсивном(не в ленивых языках) придется выделять память, под весь список. а хаскелл, ИМХО, нормально бы справился с задачей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2010, 14:50:38 |
|
||
|
алгоритм последовательной генерации строк aaa-zzz
|
|||
|---|---|---|---|
|
#18+
fleandr в общем надо: 1)сгенерить исходную строку. 2)пока не сдохнем 3)инкрементировать первый символ. 4)если код символа стал >27 сделать перенос и распространить его сколько надо наверно это оптимальный алгоритм Всё верно. Если ты изучал ЦУ и МПС, то так работает сумматор. Только для оптимизации несколько двоичных разрядов объединяются в группы и суммирование групп происходит шифратором (или дешифратором не помню но это непринципиально). Это самый быстрый метод сложения двух двоичных чисел в природе. Быстрее не бывает. Его можно еще упростить, взяв за правило, что второе слагаемое всегда будет равно единице и схема сумматора упроститься. Сумматор можно сгенерить искусственно исходя из введённого параметра N=20 (к примеру). А каждая цифра сумматора будет 5-битной (как раз для кодирования) букв алвавита. Генерацию сумматора надо-бы делать динамической компилляцией. Но в этом сабже я не силён, особенно в если язык не С# и не Java. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2010, 14:55:16 |
|
||
|
алгоритм последовательной генерации строк aaa-zzz
|
|||
|---|---|---|---|
|
#18+
рекурсионный нормально. Вот в этом примере перебираются все слова с длиной на 5 символов и алфавитом в 6 символов. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2010, 14:56:06 |
|
||
|
алгоритм последовательной генерации строк aaa-zzz
|
|||
|---|---|---|---|
|
#18+
рекурсивно написал: но вот память кушает хотя и немного... интересно а все таки как быстрее 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; } } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2010, 14:57:14 |
|
||
|
алгоритм последовательной генерации строк aaa-zzz
|
|||
|---|---|---|---|
|
#18+
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. ключевое место, ты накапливаешь все элементы. а нужно, вызвать процедуру для каждого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2010, 15:09:31 |
|
||
|
алгоритм последовательной генерации строк aaa-zzz
|
|||
|---|---|---|---|
|
#18+
Это большая проблема ? У меня универсальная функция, ее можно запаковать в библиотеку. Передаешь алфавит, длину слова и она возвращает все возможные вариации слов по этому алфавиту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2010, 15:23:30 |
|
||
|
алгоритм последовательной генерации строк aaa-zzz
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaNrstudioда, тогда можно рекурсивно только при рекурсивном(не в ленивых языках) придется выделять память, под весь список. а хаскелл, ИМХО, нормально бы справился с задачей. Опять начинается, Хаскелл, Лисп ... там где за три минуты в 5 строчек кода пишется на шарпе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2010, 15:24:34 |
|
||
|
алгоритм последовательной генерации строк aaa-zzz
|
|||
|---|---|---|---|
|
#18+
все мы поняли, что когда речь идет о коротком понятном коде, все Лисперы копируют под кальку шарповый код и удаляют декларации. Возможны птицы высоты полета Ксени выдали нам бы что получше, но пока такой расклад по палатам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2010, 15:25:46 |
|
||
|
алгоритм последовательной генерации строк aaa-zzz
|
|||
|---|---|---|---|
|
#18+
rstudioZyK_BotaNrstudioда, тогда можно рекурсивно только при рекурсивном(не в ленивых языках) придется выделять память, под весь список. а хаскелл, ИМХО, нормально бы справился с задачей. Опять начинается, Хаскелл, Лисп ... там где за три минуты в 5 строчек кода пишется на шарпе я согласен, что решение с циклом самое лучшее. я лишь сказал что рекурсия себя может быть приемлемой только для ленивого языка, и то уже начал в этом сомневаться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2010, 15:27:11 |
|
||
|
алгоритм последовательной генерации строк aaa-zzz
|
|||
|---|---|---|---|
|
#18+
rstudioЭто большая проблема ? У меня универсальная функция, ее можно запаковать в библиотеку. Передаешь алфавит, длину слова и она возвращает все возможные вариации слов по этому алфавиту. функция то универсальная, но поставленную задачу решает плохо. а если нужно вызвать процедуру для всех элементов с двадцатью порядками? памяти то хватит. а решение с циклом, будет работать долго, но память не съест. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2010, 15:29:00 |
|
||
|
алгоритм последовательной генерации строк aaa-zzz
|
|||
|---|---|---|---|
|
#18+
rstudioвсе мы поняли, что когда речь идет о коротком понятном коде, все Лисперы копируют под кальку шарповый код и удаляют декларации. Возможны птицы высоты полета Ксени выдали нам бы что получше, но пока такой расклад по палатам причем здесь лисп и декларации? я лишь предположил, что в ленивом хаскелле, рекурсивный алгоритм сможет выполнится с использованием малого объема памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2010, 15:31:21 |
|
||
|
алгоритм последовательной генерации строк aaa-zzz
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaN а решение с циклом, будет работать долго, но память не съест. долго это примерно сколько ... Давай посчитаем точно, допустим один миллиард комбинаций в секунду на самом мощном компьютере в мире. Получается ... 231 481 дней ... но памяти сожрет немного .... зачем эти громкие слова ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2010, 15:33:22 |
|
||
|
алгоритм последовательной генерации строк aaa-zzz
|
|||
|---|---|---|---|
|
#18+
rstudioZyK_BotaN а решение с циклом, будет работать долго, но память не съест. долго это примерно сколько ... Давай посчитаем точно, допустим один миллиард комбинаций в секунду на самом мощном компьютере в мире. Получается ... 231 481 дней ... но памяти сожрет немного .... зачем эти громкие слова ? ну с 20-ю я загнул. но зачем же придираться к мелочам? смысл я надеюсь понятен, что итеративный алгоритм использует мало памяти, а рекурсивный ее жрет, и при этом скорости не добавляет. Наоборот требует выделения\освобождение памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2010, 15:37:47 |
|
||
|
алгоритм последовательной генерации строк aaa-zzz
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaNrstudioвсе мы поняли, что когда речь идет о коротком понятном коде, все Лисперы копируют под кальку шарповый код и удаляют декларации. Возможны птицы высоты полета Ксени выдали нам бы что получше, но пока такой расклад по палатам причем здесь лисп и декларации? я лишь предположил, что в ленивом хаскелле, рекурсивный алгоритм сможет выполнится с использованием малого объема памяти. Теория нам говорит. Что любой рекурсивный алгоритм можно переписать итеративно. Просто на 95% я уверен что это не нужно ТС. Оптимизировать нужно только тогда, когда это критично. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2010, 15:38:54 |
|
||
|
алгоритм последовательной генерации строк aaa-zzz
|
|||
|---|---|---|---|
|
#18+
ZyK_BotaNrstudioZyK_BotaN а решение с циклом, будет работать долго, но память не съест. долго это примерно сколько ... Давай посчитаем точно, допустим один миллиард комбинаций в секунду на самом мощном компьютере в мире. Получается ... 231 481 дней ... но памяти сожрет немного .... зачем эти громкие слова ? ну с 20-ю я загнул. но зачем же придираться к мелочам? смысл я надеюсь понятен, что итеративный алгоритм использует мало памяти, а рекурсивный ее жрет, и при этом скорости не добавляет. Наоборот требует выделения\освобождение памяти. Рекурсивный памяти совершенно не жрет. В рекурсионных алгоритмах есть недостаток, они не могут разворачиваться "бесконечно". Стек не резиновый. Но вложенность в 100 вызовов функций, вполне может быть. Здесь же рекурсионный алгоритм разворачивается на длину слова, что весьма приемлимо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.06.2010, 15:41:15 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=36687960&tid=1343619]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
185ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 510ms |

| 0 / 0 |
