Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.07.06;
Скачать: CL | DM;

Вниз

Получить все возможные комбинации символов :(   Найти похожие ветки 

 
TIF ©   (2008-05-25 19:00) [0]

Есть множество символов (словарик в виде массива или строки с заданными символами). Нужно получить все возможные их комбинации длиной от M до N символов...
С виду задача простая, но я запутался в ней по уши. Примеры в интернете есть, но для сочетаний цифр, а у меня символы могут быть абсолютно любыми

Есть ли у кого-нибудь функция (процедурка) для решения такой задачи?
Заранее спасибо


 
Kerk ©   (2008-05-25 19:02) [1]

А чем сочетания цифр отличается от сочетания символов? Цифры - это такие же символы.


 
TIF ©   (2008-05-25 19:06) [2]

В тех примерах например к массиву, состоящему из чисел от 0 до 9, прибавляется 1

a[i]:=a[i]+1

Что-то вроде того... Ну а символы так прибавлять не получится. Даже если использовать коды символов, это тоже бесполезно: символы идут не попорядку... Короче способ не подходит, к тому же, как я понял по отзывам, он работает с глюками :)


 
Kerk ©   (2008-05-25 19:08) [3]


> TIF ©   (25.05.08 19:06) [2]
> Даже если использовать коды символов, это тоже бесполезно:
>  символы идут не попорядку

Ну даже если так, то ничто тебе не мешает положить символы в массив и обращаться к ним по порядку.


 
_mirage   (2008-05-25 19:09) [4]

да купи ты метлу наконец! займись тем, где ничего особо испортить нельзя и мозг не нужен.

---
Understanding is not required. Only obedience.


 
TIF ©   (2008-05-25 19:13) [5]

> и обращаться к ним по порядку.
Ну вот именно, а как? Гуглл вообще молчит, ерунду всякую выдаёт... Может я неправилные запросы пишу к поисковикам, но реального примера для моей ситуации найти не могу :(

> да купи ты метлу наконец!
И буду летать по ночам...


 
Kerk ©   (2008-05-25 19:15) [6]


> TIF ©   (25.05.08 19:13) [5]
>
> > и обращаться к ним по порядку.
> Ну вот именно, а как?

Как по порядку обращаться к элементам массива? Мощно.


 
Ping-Pong   (2008-05-25 19:16) [7]

Примеры в интернете есть, но для сочетаний цифр, а у меня символы могут быть абсолютно любыми

А у тебя символы в памяти каким шрифтом отображаются: Tahoma или Arial? А то у меня знакомый пытался работать со шрифтом Times New Roman - так у него тоже ничего не получалось. Ты посмотри, может у тебя такая же ситуация - так ты шрифт смени. А то только время потратишь впустую..


 
No_Dead ©   (2008-05-25 19:16) [8]

> Гуглл вообще молчит, ерунду всякую выдаёт

книги! книги! книги читать надо!


 
Правдолюб   (2008-05-25 19:17) [9]

>TIF
Поищи здесь:

http://delphimaster.net/view/2-1211620887/
http://delphimaster.net/view/2-1211620887/
http://delphimaster.net/view/2-1211620887/
http://delphimaster.net/view/2-1211620887/


дальше было лень собирать...


 
TIF ©   (2008-05-25 19:21) [10]

> Как по порядку обращаться к элементам массива? Мощно.
Не ту мысль выразил :))) Обращаться-то по индексу надо %)

Вот что я имел в виду:

for M to N do
begin
 {А вот тут надо делать какие-то операции... Вот как я себе это представляю в общих чертах:}
 for j:=1 to 66 do //66 - кол-во символов в массиве-словаре
 begin
   s:="";
   for n:=M to N do//
   begin
     s:=s+symbols[j];
     ListBox1.Items.Add(s);
   end;
end;

Нужно как-то вложить циклы друг в друга, чтобы выводилась последовательность вида:

a
b
...
y
z
aa
ab
...

А вот сообразить, как нужно эти циклы-матрёшки вкладывать друг в друга, не могу


 
Умище   (2008-05-25 19:23) [11]


> TIF ©   (25.05.08 19:13) [5]
> > и обращаться к ним по порядку.Ну вот именно, а как?


Элементы массива имеют порядковый номер в массиве(индекс).
a[1],a[2]..a[n].

Увеличивая значение индекса на единицу можно последовательно получать элементы массива.


 
TIF ©   (2008-05-25 19:23) [12]

> дальше было лень собирать...
Коллекция красных буковок?


 
Anatoly Podgoretsky ©   (2008-05-25 19:23) [13]

> TIF  (25.05.2008 19:13:05)  [5]

Не понял, ты не умеешь работать с массивами? Тогда что же ты делаешь в программирование?


 
Умище   (2008-05-25 19:24) [14]


> Anatoly Podgoretsky ©   (25.05.08 19:23) [13]
> > TIF  (25.05.2008 19:13:05)  [5]Не понял, ты не умеешь
> работать с массивами? Тогда что же ты делаешь в программирование?
>


А разве здесь программирование? Здесь же потрепаловка?


 
_mirage   (2008-05-25 19:25) [15]

>[11] Умище (2008-05-25 19:23:00)
забыл добавить «так-то!».

---
Understanding is not required. Only obedience.


 
Ping-Pong   (2008-05-25 19:25) [16]

А вот сообразить, как нужно эти циклы-матрёшки вкладывать друг в друга, не могу

Типа так:

for i := 0 to 9 do
 for k := 0 to i do


 
TIF ©   (2008-05-25 19:25) [17]

> Увеличивая значение индекса на единицу можно последовательно
> получать элементы массива.

Ну хоть это я знаю :) Уже хорошо

Ну, прогнал я от первого до последнего все элементы, получил все строки длиной в 1 символ... А теперь надо прогнать для 2-х, 3-х итд символов... Я не могу врубиться, как это зациклить?


 
_mirage   (2008-05-25 19:26) [18]

>[17] TIF © (2008-05-25 19:25:00)
я поторопился с метлой. ты ж не сообразишь, что с ней делать.

---
Understanding is not required. Only obedience.


 
Anatoly Podgoretsky ©   (2008-05-25 19:27) [19]

> Умище  (25.05.2008 19:24:14)  [14]

Ну так и трепемся.


 
TIF ©   (2008-05-25 19:27) [20]

> for i := 0 to 9 do
> for k := 0 to i do


Что за i, что за k и от чего они зависят? Если правильно понял, эта штука будет работать для 2-х символьной комбинации... А если N=200? мне что, 200 переменных заволить...


 
Умище   (2008-05-25 19:32) [21]


> _mirage   (25.05.08 19:26) [18]
> >[17] TIF © (2008-05-25 19:25:00)я поторопился с метлой.
>  ты ж не сообразишь, что с ней делать.


Вспомни высказывания про троллинг в соседней ветке...
Щаз тоже везде тыкать начну, испытаю оргазм от стадного чувства причастности...


 
TIF ©   (2008-05-25 19:35) [22]

> Умище   (25.05.08 19:32) [21]

Так, извращенец, ты это испытывать будешь не в этой ветке. Твой способ вообще только для 9 символов работает и вообще не в тему...


 
_mirage   (2008-05-25 19:37) [23]

>[21] Умище (2008-05-25 19:32:00)
а яя её не читал, там многабукав.

---
Understanding is not required. Only obedience.


 
Kerk ©   (2008-05-25 19:39) [24]


> _mirage   (25.05.08 19:37) [23]

Ты не отвечаешь на мой ответ! То, что с ноября прошло года...


 
Умище   (2008-05-25 19:41) [25]


> TIF ©   (25.05.08 19:35) [22]
> > Умище   (25.05.08 19:32) [21]Так, извращенец, ты это испытывать
> будешь не в этой ветке. Твой способ вообще только для 9
> символов работает и вообще не в тему...


Я вообще не приводил способа.
ТЗ у тебя неполное и задача неоднозначна.


 
Рамиль ©   (2008-05-25 19:42) [26]


> А если N=200? мне что, 200 переменных заволить...

А рекурсию для кого придумали?


 
TIF ©   (2008-05-25 19:44) [27]

> А рекурсию для кого придумали?
:((( Как я хотел, чтобы про неё не вспоминали. Ненавижу рекурсию...

Всё равно принцип не могу понять, как всё это будет вызываться. Мне нужен сам алгоритм, хоть на алгоритмическом языке напишите, кто-нибудь, плз... Саму последовательность действий нужно


 
Умище   (2008-05-25 19:50) [28]


> TIF ©   (25.05.08 19:44) [27]


У тебя в массиве есть повторяющиеся символы? Их повторно надо использовать? Комбинации неповторяющиеся должны быть?


 
TIF ©   (2008-05-25 19:53) [29]

> У тебя в массиве есть повторяющиеся символы? Их повторно
> надо использовать? Комбинации неповторяющиеся должны быть?


Повторяющихся нет, комбинации должны быть НЕповторяющиеся...
В крайнем случае можно и с повторами, потом просто отфильтрую лишнее


 
Рамиль ©   (2008-05-25 19:58) [30]

function NComb(n): string
var
 i: integer;
begin
 if n > 1 then
   for i := 0 to High(SymbArray) do
     Result = SymbArray[i] + NComb(n-1);
 else
       for i := 0 to High(SymbArray) do
     Result = SymbArray[i];
end;


Вызвать функцию и сделать от M домашнее задание.


 
ага   (2008-05-25 20:00) [31]


> TIF ©   (25.05.08 19:53) [29]


> потом просто отфильтрую лишнее

Для русского алфавита (33 буквы) будет 8,68331761881188649551819440128e+36 комбинаций.


 
TIF ©   (2008-05-25 20:03) [32]

> Для русского алфавита (33 буквы) будет 8,68331761881188649551819440128e+3
> 6 комбинаций.


Это для комбинаций какой максимальной длины? Я нигде точное число не называл, оно фигуриет как N


 
TIF ©   (2008-05-25 20:10) [33]

> Рамиль ©   (25.05.08 19:58) [30]
> function NComb(n): string

Invalid pointer operation

?! Что-то не работает


 
Anatoly Podgoretsky ©   (2008-05-25 20:37) [34]

> Рамиль  (25.05.2008 19:42:26)  [26]

Да какая тут к черту рекурсия, тут даже дисков не хватит, это же  !200^N


 
TIF ©   (2008-05-25 20:44) [35]

> Да какая тут к черту рекурсия, тут даже дисков не хватит,
> это же  !200^N


Да что такое... Не то вы мне дали... Откуда какие-то странные огромные факториалы?! У меня может максимальная длина комбинации будет 10 символов...

Код Рамиля не работает, ошибку я уже выше написал... И хз знает, куда копать...

Неужели ни у кого нет реально работающего тотового примера? Хоть на паскале...


 
Рамиль_   (2008-05-25 20:47) [36]


> Anatoly Podgoretsky ©   (25.05.08 20:37) [34]

Так он вроде про 200 не говорил, в любом случае не моя проблема:)


> TIF ©   (25.05.08 20:10) [33]

Тебе точно метлу дать что ли.. Подправь что бы работало. Ты же просил алгоритм.


 
TIF ©   (2008-05-25 20:51) [37]

> Ты же просил алгоритм.
Проблема в том, что я его не вижу. Вместо него вижу код

Короч, никто никогда именно такими делами не занимался. Ясно


 
Умище   (2008-05-25 20:54) [38]


> TIF ©   (25.05.08 20:51) [37]
> > Ты же просил алгоритм.Проблема в том, что я его не вижу.
>  Вместо него вижу кодКороч, никто никогда именно такими
> делами не занимался. Ясно


Алгоритм разрабатывается в течение 10 минут, что я сейчас и сделал...
Словами его описывать лень. Если подождешь минут 20 - пример сделаю.


 
TIF ©   (2008-05-25 21:00) [39]

> Если подождешь минут 20 - пример сделаю.
Могу подождать, не проблема


 
Рамиль_   (2008-05-25 21:14) [40]

Код не работает.. Ну есть там ошибка логическая.. Думалка в выходные не работает)



Страницы: 1 2 3 вся ветка

Текущий архив: 2008.07.06;
Скачать: CL | DM;

Наверх




Память: 0.57 MB
Время: 0.021 c
3-1201386021
leonidus
2008-01-27 01:20
2008.07.06
Размещение изображения в таблице Access


15-1211466716
TIF
2008-05-22 18:31
2008.07.06
Посоветуйте, плз, бесплатный хостинг (с PHP)


3-1201592329
NNH
2008-01-29 10:38
2008.07.06
Печать ф. А3 двуми листами А4


2-1212611962
alex-drob
2008-06-05 00:39
2008.07.06
Запретить TreeView раскрываться при двойном клике на item-ах


15-1211389309
Foo Fighters
2008-05-21 21:01
2008.07.06
Как сделать ограничение потоков при закачке?