Перебор чисел

From
Eugene Anuchin (2:5070/96.2)
To
Dmitriy Gerasimenko
Date
2002-07-24T00:12:05Z
Area
RU.ALGORITHMS
Hi, Dmitriy !

 23 Июл 02 11:22, Dmitriy Gerasimenko wrote to Eugene Anuchin:

 >>  DG> Мой алгоритм похож на электросчётчик, или на спидометр в
 >>  DG> автомобиле если угодно. Соответсвенно, по моёй формуле количество
 >>  DG> перестановок твоего числа "0123456789" = 10^10
 >> EA > А какой тогда здесь вообще алгоритм?!
 >> EA > Просто пробегаем все значения от 0 до 10^10-1

 DG> А кто вообще говорил что это должны быть обязательно числа ???........
 DG> Никто вроде не говорил! Всё немного сложнее и интереснее чем кажется.
Это уж точно. "Моим числом" ты сам назвал то, что я везде определял как строку произвольных символов.

 DG> А для символов: "KADY", "WOUCJKB", "QWERTY" организовать цикл т.е.
 DG> "пробежать" тоже не получится!
Почему? Представь себе четверичную систему (и)счисления, где ноль обозначается символом "K", единица="A", двойка ="D", тройка ="Y".
Затем "ПРОБЕГИСЬ" от 0 до 4^4-1 и будет тебе (KKKK-YYYY). Остальные примеры аналогично.

 DG>  Ну а коли так! То цикл тут не поможет,
 DG> и применять следует ПЕРЕСТАНОВКУ! Ну а если применить следует
 DG> ПЕРЕСТАНОВКУ, то это ни что иное как алгоритм перестановки.
Золотые слова.

 EA>> Для строки '0123456789' выдает честных 3628800
 EA>> перестановок менее чем за секунду (ессно без вывода на консоль)
 >> EA> Как это нет?!!! Печать идет на стандартное устройство вывода (по
 DG> Тебя не понять, сначала ты пишешь что вывода на консоль нет, потом
 DG> ,что есть!? Определись!
Определяюсь: Для генерации 3628800 перестановок за <1сек. нужно отключить вывод на консоль. Вроде понятно объяснил.

 DG> Далее... хорошо, вот то, что ты имеешь в виду, но не имею в виду я:
 DG> это БЕЗ рекурсии, но есть и С рекурсией....
[Прога пропущена]
 DG> Результат вывода для числа: [1234]
 DG> 1 : 2134
[...]
 DG> 12 : 1234
 DG> На сим заканчиваю... алгоритмы разные нужны, алгоритмы разные важны.

Вот когда для четырех элементов у тебя получится 4!=1х2х3х4=24 перестановки,
тогда можно и заканчивать.

Вот скомпиленый пример. В коммандной строке набрать: recur abcd
или: recur privet>result.txt
а также: recur 0123456789

===============================================================
section 1 of uuencode 5.10 of file recur.com    by R.E.M.

begin 644 recur.com
MNH(`B=,"7_['!PHD2RG3=BBT"<TAB/6(W_[+@/L!=@53Z//_6XC9B=>)UD:*
-!?.DJO[/=`3-(>OBP^OB
`
end
sum -r/size 54673/110 section (from "begin" to "end")
sum -r/size 47730/58 entire input file
===============================================================

... Life - Sucks!
--- Не подохнешь - пpивыкнешь, не пpивыкнешь - подохнешь! (М. Жванецкий)
 * Origin: `Wireless' Евгений ael @irk. ru (2:5070/96.2)