Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2008.07.06;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.044 c
11-1189512903
SergeR
2007-09-11 16:15
2008.07.06
Вопрос по KOLmdvShellControls


15-1211448991
_mirage
2008-05-22 13:36
2008.07.06
9P на паскале


2-1212741153
VovKul
2008-06-06 12:32
2008.07.06
Разкладка клавиатуры


6-1189799328
sniknik
2007-09-14 23:48
2008.07.06
Глюк компонента TIdUDPServer в 10м Indy? Проверьте ктонибудь.


3-1201519088
ganda
2008-01-28 14:18
2008.07.06
Table is busy





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский