Форум: "Прочее";
Текущий архив: 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.048 c