![]() |
eXeL@B —› Вопросы новичков —› Обратить функцию. |
Посл.ответ | Сообщение |
|
Создано: 14 января 2010 22:57 · Поправил: 4t · Личное сообщение · #1 Всем привет, с прошедшими и будущими праздниками! Тут такое дело ![]() Значит параметры функции следующие: на входе: 1.) - массив из 7 байт // например (a0, a1, a2, a3, a4, a5, a6) 2.) - 6 значное число. // где цифры этого чила - индексы перестановки, допустимые значения цифр которых: 0-6, цифры уникальны в пределах данного числа, например 123456 на выходе: 1.) тот же самый массив, но с другим расположением элементов // (a6, a0, a1, a2, a3, a4, a5) Можно заметить, что количество индексов не соответствует размеру массива ). В этом думаю и загвоздка. В позицию отсутствующего индекса в массиве, в данном примере - 0, вставляется шестой элемент исходного массива. Вот мое творение, всё это дело реализующее, рипнуто под pascal, для вычислений использую Algebrus, весит 2мб, код можно в него вставить и будет работать: Code:
Задача. Имея индексы и изменненый массив, надо получить оригинальный массив. Пример: ($a0,$a1,$a2,$a3,$a4,$a5,$a6) < - оригинальный 230456 a2, a6, a0, a1, a3, a4 ,a5 634021 a3, a5, a4, a1, a2, a6, a0 ![]() |
|
Создано: 15 января 2010 16:23 · Поправил: mak · Личное сообщение · #2 ![]() 4t пишет: Задача. Имея индексы и изменненый массив, надо получить оригинальный массив. Скорее всего ты имеешь ввиду индексную сортировку или индексную инверсию , по этому запросу можно поискать в нете примеры ----- RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube ![]() |
|
Создано: 15 января 2010 20:20 · Личное сообщение · #3 mak Ну да, аверс функции - получается индексная сортировка. За исключением отсутствия одного индекса. Отсортировать то не проблема. Проблема получить из тех же самых индексов и отсортированного массива - исходный массив. По крайней мере у меня пока не получается. Пробую на бумажке, для одних параметров нахожу алго, меняю индексы, и всё - алго не катит. Поискал в инете, там куча про сортировку, и индексную тоже, про то как обратить не написано. Собственно искал по теме ещё до того, как задать вопрос здесь. Пока в аверсе имею следующее, далее дело не идёт. условие выполняется всегда: исходный_м[6]:= отсортированный_м[отсутствующий_индекс] Мож кто-нить попробует осилить, кода то немного. Если надо, выложу оригинальный asm листинг этой функции. ![]() |
|
Создано: 15 января 2010 21:34 · Личное сообщение · #4 |
|
Создано: 15 января 2010 23:49 · Личное сообщение · #5 Усё, осилил, оказалось не так уж и сложно. Получилось примерно так: Code:
![]() |
|
Создано: 15 января 2010 23:54 · Личное сообщение · #6 mak вот листинг Code:
Но теперь появилась другая проблема - генерация этих самих индексов. То бишь нужно сгенерировать шестизначное число из не повторяющихся цифр. Причем рандомно. Есть предложения? ![]() |
|
Создано: 16 января 2010 02:43 · Поправил: Neo32 · Личное сообщение · #7 |
|
Создано: 16 января 2010 15:07 · Поправил: mak · Личное сообщение · #8 |
|
Создано: 16 января 2010 18:07 · Поправил: Neo32 · Личное сообщение · #9 mak сорри за неточность )), вот код демонстрирующий указанный в посте №7 алгоритм Code:
![]() |
|
Создано: 16 января 2010 20:58 · Личное сообщение · #10 |
![]() |
eXeL@B —› Вопросы новичков —› Обратить функцию. |
Эта тема закрыта. Ответы больше не принимаются. |