Посл.ответ |
Сообщение |
 Ранг: 110.0 (ветеран), 1thx Активность: 0.09↘0 Статус: Участник
|
Создано: 07 августа 2006 15:05 · Поправил: Satanael · Личное сообщение · #1
Нужны вот такие алгоритмы:
1) перестановка K объектов на N места, K>N. Может кто-то делал или в инете видел?
и
2)исходники эфеекта движения текста (что-то по типа html-тэга MARQUEE), на дельфи.
----- Никто не знает столько, сколько не знаю я | Сообщение посчитали полезным: |
|
 Ранг: 299.6 (наставник) Активность: 0.3↘0 Статус: Участник Armadillo Killer
|
Создано: 07 августа 2006 15:12 · Поправил: Z0oMiK · Личное сообщение · #2
Двигаем тексть
label1.left:=label1.left-1;
if label1.left <(-label1.Width) then
label1.left:=GroupBox3.Width;
для события OnTimer пойдет ?
Interval = 40
| Сообщение посчитали полезным: |
 Ранг: 110.0 (ветеран), 1thx Активность: 0.09↘0 Статус: Участник
|
Создано: 07 августа 2006 15:29 · Личное сообщение · #3
А через чистый апи?
----- Никто не знает столько, сколько не знаю я | Сообщение посчитали полезным: |
Ранг: 88.0 (постоянный) Активность: 0.07↘0 Статус: Участник
|
Создано: 07 августа 2006 17:37 · Личное сообщение · #4
Satanael пишет:
А через чистый апи?
Ставим таймер через SetTimer. Двигаем текст через GetWindowPos/SetWindowPos.
| Сообщение посчитали полезным: |
Ранг: 54.0 (постоянный) Активность: 0.02↘0 Статус: Участник
|
Создано: 07 августа 2006 21:40 · Личное сообщение · #5
Satanael пишет:
1) перестановка K объектов на N места, K>N. Может кто-то делал или в инете видел?
...? поконкретнее, пожалуйста.
| Сообщение посчитали полезным: |
 Ранг: 110.0 (ветеран), 1thx Активность: 0.09↘0 Статус: Участник
|
Создано: 07 августа 2006 21:55 · Личное сообщение · #6
Ну например есть 4 места, на них нужно раставить 8 чисел от 1-8.
Всего таких комбинаций будет 1680.
1 2 3 4
1 2 3 5
1 2 3 6
1 2 3 7
1 2 3 8
1 2 4 3
1 2 4 5
1 2 4 6
1 2 4 7
1 2 4 8
1 2 5 3
1 2 5 4
1 2 5 6
...........
8 7 2 5
8 7 2 6
8 7 3 1
8 7 3 2
8 7 3 4
8 7 3 5
8 7 3 6
8 7 4 1
8 7 4 2
8 7 4 3
8 7 4 5
8 7 4 6
8 7 5 1
8 7 5 2
8 7 5 3
8 7 5 4
8 7 5 6
8 7 6 1
8 7 6 2
8 7 6 3
8 7 6 4
8 7 6 5
----- Никто не знает столько, сколько не знаю я | Сообщение посчитали полезным: |
Ранг: 210.5 (наставник), 2thx Активность: 0.14↘0 Статус: Участник
|
Создано: 07 августа 2006 23:29 · Поправил: arnix · Личное сообщение · #7
Вот антилексиграфический алгоритм для генерации пермутаций, давно писал, если нужно можно и лексиграфический написать.
Edit: жаль что форум идентацию (табы) убирает, не крачиво кож выглядит.
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
// Antilexigraphic permutations generation
// recursive alпorithm by arnix [arnix@freenet.am]
int gen_b(int m,i);
void gen(int m);
char a[] = "123";
int main()
{
gen(strlen(a)-1);
return 0;
}
int gen_b(int m,i)
{
if ( (m > 2) && (m % 2 == 0) )
{
if (i < m-1)
{
return i;
}
else
{
return m-2;
}
}
else
{
return m-1;
}
}
void gen(int m)
{
int i,k;
char temp;
if (m == 0)
{
printf("%s\n",a);
}
else
{
for (i=0;i<=m;i++)
{
gen(m-1);
if (i<m)
{
k = gen_b(m,i);
temp = a[m];
a[m] = a[k];
a[k] = temp;
}
}
}
}
| Сообщение посчитали полезным: |
 Ранг: 110.0 (ветеран), 1thx Активность: 0.09↘0 Статус: Участник
|
Создано: 07 августа 2006 23:36 · Личное сообщение · #8
Что озночает антилексиграфический???
----- Никто не знает столько, сколько не знаю я | Сообщение посчитали полезным: |
Ранг: 210.5 (наставник), 2thx Активность: 0.14↘0 Статус: Участник
|
Создано: 07 августа 2006 23:41 · Личное сообщение · #9
>> Что озночает антилексиграфический???
Это значит что генерится например не
123
132
213
231
312
321
а например так (как в этом алго)
123
213
231
321
312
132
| Сообщение посчитали полезным: |
Ранг: 253.9 (наставник) Активность: 0.13↘0 Статус: Участник
|
Создано: 07 августа 2006 23:42 · Личное сообщение · #10
Satanael пишет:
Что озночает антилексиграфический???
похоже то, что этот алго мутирует беря в расчет только символьные коды... а не как-то сложнее...
----- MicroSoft? Is it some kind of a toilet paper? | Сообщение посчитали полезным: |
Ранг: 253.9 (наставник) Активность: 0.13↘0 Статус: Участник
|
Создано: 07 августа 2006 23:44 · Личное сообщение · #11
arnix
т.е. без сортировки?
----- MicroSoft? Is it some kind of a toilet paper? | Сообщение посчитали полезным: |
Ранг: 210.5 (наставник), 2thx Активность: 0.14↘0 Статус: Участник
|
Создано: 07 августа 2006 23:48 · Личное сообщение · #12
Tim пишет:
т.е. без сортировки?
да
| Сообщение посчитали полезным: |
Ранг: 88.0 (постоянный) Активность: 0.07↘0 Статус: Участник
|
Создано: 08 августа 2006 00:14 · Личное сообщение · #13
Вот просто формула: K!/N!
| Сообщение посчитали полезным: |
Ранг: 253.9 (наставник) Активность: 0.13↘0 Статус: Участник
|
Создано: 08 августа 2006 02:15 · Личное сообщение · #14
rep0A
получим количество вариантов перестановок, да?..
только вот факториалы нужно будет сокращать... иначе может не хватить разрядности...
----- MicroSoft? Is it some kind of a toilet paper? | Сообщение посчитали полезным: |
Ранг: 88.0 (постоянный) Активность: 0.07↘0 Статус: Участник
|
Создано: 08 августа 2006 03:39 · Личное сообщение · #15
Tim пишет:
получим количество вариантов перестановок, да?
да
Tim пишет:
иначе может не хватить разрядности
Формула, она и в африке формула.  Вот как её реализовать в программе это другой вопрос. Mожно например так:
int get(int K, int N)
{
int result = K-N+1;
N++;
while(N != K) result *= (++N);
return result;
}
| Сообщение посчитали полезным: |
 Ранг: 209.5 (наставник), 42thx Активность: 0.1↘0 Статус: Участник WinCE ARM M@sTeR
|
Создано: 08 августа 2006 06:31 · Личное сообщение · #16
Satanael
Мда, когда-то много лет назад занимался решением подобной задачи, и, как не странно нашел на винте остатки того исследования. Не знаю то это или нет, что тебе нужно, но посмотри, мож какие идеи погомут. 317d_08.08.2006_CRACKLAB.rU.tgz - research.rar
----- Get busy living or get busy dying © | Сообщение посчитали полезным: |
 Ранг: 110.0 (ветеран), 1thx Активность: 0.09↘0 Статус: Участник
|
Создано: 08 августа 2006 15:04 · Личное сообщение · #17
Спасибо конечно всем.
Но это не то.
Алго арникса, генерит n чисел на n местах (всевозможное количество n!).
Я такой алго уже сделал за 4 дня жесткого брейнфакинга, потом ещё нашел пример на алголист.мануал.ру
Сейчас нужен алго чтобы k-чисел переставлялись во всевозможных вариантах на n позициях.
Вчастности нужно чтобы числа от 1 до 25 переставлялись во всевозможных варианта на 10 местах(k=25,n=10).
Эх...
----- Никто не знает столько, сколько не знаю я | Сообщение посчитали полезным: |
Ранг: 253.9 (наставник) Активность: 0.13↘0 Статус: Участник
|
Создано: 08 августа 2006 15:07 · Личное сообщение · #18
Satanael
ты брутфорсер пишешь или что? говори нормально.
----- MicroSoft? Is it some kind of a toilet paper? | Сообщение посчитали полезным: |
 Ранг: 110.0 (ветеран), 1thx Активность: 0.09↘0 Статус: Участник
|
Создано: 08 августа 2006 16:03 · Личное сообщение · #19
Да не нужно так одно умозаключение проверить (своё).
Алгоритм я вверху подробно описал.
Я состряпол очень простенький алгоритм, ну и он соответственно медленный очень (аттач)
----- Никто не знает столько, сколько не знаю я | Сообщение посчитали полезным: |
 Ранг: 110.0 (ветеран), 1thx Активность: 0.09↘0 Статус: Участник
|
Создано: 08 августа 2006 16:04 · Личное сообщение · #20 |