![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите написать функцию [D7, XP]
neveGreen © (2008-12-30 15:51:00)Есть массив элементов типа Integer
SetLength(MyArr, 4);
MyArr[0] := 2;
MyArr[1] := 7;
MyArr[2] := 4;
MyArr[3] := 1;
Надо функцию которая будет возвращать поочередно
0 элемент, поом
01 потом
02
03 потом
10
12
13
....
102
...
321
....
0123
короче все комбинации с одним двумя тремя и четырмя количеством элементов так чтобы они не повторялись. Заранее благодарю
Нат (2009-01-04 03:01:00) [1]Решите сперва частную задачу - перебор вариантов для двух знаков.
Для 1 знака варианты и так понятны.
neveGreen (2009-01-03 20:19:00) [2]Самое трудное сделать это функцией, тоесть чтобы функция на основе предыдущего значения делала следующее - вот это труба....
MBo (2009-01-03 15:26:00) [3]Воспользуйся множествами и рекурсией
neveGreen (2009-01-03 03:00:00) [4]
> Германн © (03.01.09 02:56) [15]
никто не мешает. Я же спрашиваю для того чтобы возможно вообще ничего не трясти, вдруг ктото сталкивался с такой проблемой и уже знает ответ, что тут не понятного?
Германн (2009-01-03 02:56:00) [5]
> neveGreen (03.01.09 02:41) [13]
>
>
> > Надо трясти!
>
> Да тут хоть бы трясочек сделать...
>
Ну так тряси! Кто тебе мешает?
Нат (2009-01-03 02:52:00) [6]Были такие кодовые замки на парадных, где одновременно надо нажать 2..4 цифры, чаще всего их программировали на 3 цифры.
Та самая задача.
Никогда не подбирал на морозе?
Всего на пару минут делов.
neveGreen (2009-01-03 02:41:00) [7]
> Надо трясти!
Да тут хоть бы трясочек сделать...
Германн (2009-01-03 02:32:00) [8]
> neveGreen (03.01.09 02:25) [11]
>
> Как Вы думаете что будет быстрее
>
Да что тут думать! Надо трясти!
(с) Анекдот из советских времён.
neveGreen (2009-01-03 02:25:00) [9]Как Вы думаете что будет быстрее
> neveGreen (02.01.09 15:48) [10]
или для каждого размера динамического массива от 1 до четырех, тоесть для его элемента(ов), находить все подмножества множества элементов исходного массива, и для каждого такого подмножества получать все перестановки?
neveGreen (2009-01-02 15:48:00) [10]Что никто не поможет? Есть вариант генерировать все комбинации и в это же время проверять на повторяющиеся элементы и исключать эти комбинации, но это очень долго....
neveGreen (2008-12-30 22:29:00) [11]да я понимаю что элементарная...только моя голова не очень может ее разложить... надо кусок в функции вызвать рекурсией но не могу никак сообразить. помогите плиз...
DVM (2008-12-30 21:40:00) [12]
> neveGreen
задача элементарная же, ну подумал бы сам что ли
Jeer (2008-12-30 21:26:00) [13]Кто тебе мешает ?
Делай как желаешь.
neveGreen (2008-12-30 21:08:00) [14]Это перебор комбинаций массива. Пин код не катит потому что в пине могут быть комбинации 1112 а тут ни в одной комбинации нет повторяющихся элементов. Это реальная задача по поиску комбинаций а не лаба, ну можно и лабу конечно сделать такую.
Вобщена надо взят первый индекс допустим, и перебрать все комбинации с 1 в начале начиная от комбинации '1' и закнчивая '1742' потом взять комбинацию '2' которая завершится '2741' и тд. Но это в алфавитном порядке, но можно и не в алфавитном генерируя последовательно индексы и записывая их в другой динамический массив длинна которого постепенно увеличиться с 1 до 4, для данного случая:
0, 1, 2, 3, 01, 10, 02, 20, 03, 30, 12, 21, 13, 31, 23, 32, 012, 021..... и тд.
inviz (2008-12-30 16:33:00) [15]у нас преподаватель в колледже когда на курсах повышения квалификации был, он такие алгоритмы разрабатывал, точно помню он показывал. Это алгоритмирование по программе обучения в университетах тока забыл как называется...
Сергей М. (2008-12-30 16:16:00) [16]Похоже)
clickmaker (2008-12-30 16:07:00) [17]> Это что , лаба ?
это подбор пин-кода
o)
DevilDevil (2008-12-30 15:54:00) [18]не понял принцип
Сергей М. (2008-12-30 15:53:00) [19]Это что , лаба ?