|
Алгоритм получения всех комбинаций значений | ☑ | ||
---|---|---|---|---|
0
mzelensky
17.12.14
✎
12:42
|
Доброго всем. Имею таблицу значенйи со следующими колонками:
Параметр - ссылка на некий справочник МассивЗначенийПараметра - массив значений этого параметра. Тип данных элемента массива Строка(50) Значения в колонке "Параметр" уникальны (не повторяются). Количество элементов в "МассивЗначенийПараметра" произвольно (на практике от 2 до 10). Количество Строк в таблице произвольно (на практике от 2 до 5). Нужно получить все возможные комбинации значений параметров (порядок значения не имеет, только состав. Т.е. "1"+"2" = "2"+"1"). |
|||
1
mzelensky
17.12.14
✎
12:44
|
Понятно, что самое банальное - это вложенные циклы по количеству строк в таблице (что соответствует количеству параметров). Но их количество может быть относительно произвольным...
Может как-то рекурсию можно сделать? |
|||
2
quest
17.12.14
✎
12:44
|
в ПТУ про цикл не рассказывают уже?
|
|||
3
mzelensky
17.12.14
✎
12:44
|
(2) Тебе виднее, я ВУЗ заканчивал.
|
|||
4
quest
17.12.14
✎
12:46
|
(3) Судя по вопросу ты диплом купил.
Теперь мучаешь мозг окружающим |
|||
5
mzelensky
17.12.14
✎
12:46
|
Как вариант думаю сгенерировать текст запроса и полным соединением собрать все эти данные. По идее получится то, что нужно
|
|||
6
mzelensky
17.12.14
✎
12:48
|
(4) Чувак, вроде взрослый дядька, а херней страдаешь. Есть что по сути сказать - говори. А нет - не нужно тут свою обгаженую быдло душенку выворачивать.
|
|||
7
Garykom
гуру
17.12.14
✎
12:49
|
(5) меня убивают отчетактиповымдописыватели которые только запросы типа изучили и потом ими все делают даже пол подметают...
|
|||
8
Garykom
гуру
17.12.14
✎
12:50
|
(0) слабо кол-во допустимое элементов в комбинациях сразу сказать?
|
|||
9
mzelensky
17.12.14
✎
12:51
|
(7) -> (6)
|
|||
10
quest
17.12.14
✎
12:51
|
(6) еще и бараном обозвали... кастрированым... и просят еще и на халяву сделать.
Твоя задача - 11 класс общеобразовательной школы. Строить из себя тут деву с тонкой душевной организацией - не надо. Если тупишь так и напиши - "туплю. Заплачу за решение" |
|||
11
mzelensky
17.12.14
✎
12:52
|
(8) Слабо прочитать внимательно (0) ?
Количество элементов произвольно! |
|||
12
Garykom
гуру
17.12.14
✎
12:52
|
(8)+ т.е. задача в (0) описана хреново, даже не понять что с чем комбинировать хочешь
то ли значения внутри по каждому параметру переставлять-сочетать, то ли значения между параметрами=ссылками уникальными на справочники |
|||
13
Garykom
гуру
17.12.14
✎
12:53
|
(11) мда...
усть цыфры 1 2 и 3 сочетания уникальные это 1 и 2, 1 и 3, 2 и 3 и внимание 1-2-3 ну и еще 3 сочетания по 1 элементу 1, 2, 3 |
|||
14
mzelensky
17.12.14
✎
12:54
|
(12)Читаем внимательно. "Нужно получить все возможные комбинации значений параметров", затем читаем еще раз внимательно "МассивЗначенийПараметра ".
Ты сейчас сам из себя дурака делаешь. Ща пример напишу |
|||
15
Garykom
гуру
17.12.14
✎
12:55
|
(14) ...
|
|||
16
Alex S D
17.12.14
✎
12:58
|
А зачем это нужно? Так.. интересно
|
|||
17
mzelensky
17.12.14
✎
12:58
|
Исходная таблица
Параметр значения (через запятую) П1 1, 2, 3 П2 4, 5 П3 6, 7, 8, 9 То, что нужно получить на выходе 1, 4, 6 1, 4, 7 1, 4, 8 1, 4, 9 1, 5, 6 1, 5, 7 1, 5, 8 1, 5, 9 2, 4, 6 И так далее |
|||
18
mzelensky
17.12.14
✎
13:00
|
Заранее количество Параметров (П) не известно и оно может быть ЛЮБЫМ (от 2 до 1000000000). Количество Значенйи параметров (циферок) может быть ЛЮБЫМ (от 2 до 1000000000)
|
|||
19
Alex S D
17.12.14
✎
13:00
|
Цикл уже предлагали?
|
|||
20
quest
17.12.14
✎
13:00
|
(19) за цикл тут бараном называют. Чел хочет рекурсию
|
|||
21
mzelensky
17.12.14
✎
13:01
|
(19) И как ты тут цикл напишешь? Точнее какое количество циклов ты будешь делать?
|
|||
22
Alex S D
17.12.14
✎
13:02
|
по КоличествоЭлементов
|
|||
23
ssh2QQ6
17.12.14
✎
13:02
|
(17) а почему на выходе комбинации именно из трех значений?
|
|||
24
mzelensky
17.12.14
✎
13:03
|
(23) По количество параметров. Если параметров будет 5, то и комбинация будет из 5 значений.
|
|||
25
palpetrovich
17.12.14
✎
13:03
|
(23) 3 параметра
зы: имхо, цикл в цикле будет монстрячий |
|||
26
mzelensky
17.12.14
✎
13:04
|
(22) Это понятно. Я спросил про количество циклов.
|
|||
27
Йохохо
17.12.14
✎
13:04
|
(21) один цикл с конца параметров, на след итерации спереди лепим текущий уровень
|
|||
28
DirecTwiX
17.12.14
✎
13:07
|
Добавить(Результат,ПодРез,Уровень) {
|
|||
29
DirecTwiX
17.12.14
✎
13:10
|
(22) (27) Там количество вложенных циклов должно равняться количеству параметров.
Но пока самая главная интрига затаилась в (16) |
|||
30
Йохохо
17.12.14
✎
13:13
|
(29) как то это называется, то ли матрица параметров, то ли размерная сетка типа "цвет, м/ж, размер"
|
|||
31
GROOVY
17.12.14
✎
13:14
|
Как ДенисЧ продает СП, так я скоро буду торговать учебниками по информатике для 10-11 классов школы.
:) Без обид. |
|||
32
ssh2QQ6
17.12.14
✎
13:15
|
(26) раз порядок не важен, то число комбинаций на выходе можно посчитать по формуле
Если в выборках изn объектов поkобъектов порядок их следования по условию задачи не имеет значения, то размещения, отличающиеся лишь порядком следования, становятся одинаковыми. Число таких одинаковых выборок по k разных объектов, которые получаются друг из друга перестановкой, равно k! Поэтому, число выборок из n поk без учета порядка следования определяется формулой http://edu.tltsu.ru/er/book_view.php?book_id=1484&page_id=11156 |
|||
33
quest
17.12.14
✎
13:16
|
(31) не купит. все деньги на покупку диплома у ТС ушли.
|
|||
34
mzelensky
17.12.14
✎
13:16
|
(28) В целом суть понятна, но что-то сомнения по поводу работоспособности...Сейчас попробую воспроизвести.
Формирую таблицу обмена данными. Для некоторых параметров значеняи могут выступать в формате "или или" (значенйи может быть Н-ное количество) и таких параметров может быть Н-ное количество. Например "Мячик красный\зеленый\синий\ размером 20\30\40 см". Соответственно на выходе я получаю "Мячик красный размером 20 см" "Мячик красный размером 30 см" и так далее |
|||
35
МихаилМ
17.12.14
✎
13:17
|
+(31)
фактически получается система счисления для построения всех значений достаточно знать размерность и порядок и по ним в 2 циклах сделать построение все возможных значений |
|||
36
Михаил Козлов
17.12.14
✎
13:19
|
Если правильно понял задачу, то это полиномиальный коэффициент в клмбинаторике
https://ru.wikipedia.org/wiki/%CC%F3%EB%FC%F2%E8%ED%EE%EC%E8%E0%EB%FC%ED%FB%E9_%EA%EE%FD%F4%F4%E8%F6%E8%E5%ED%F2 |
|||
37
Михаил Козлов
17.12.14
✎
13:20
|
(36)+ Алгоритм, кстати, можно получить из производящей функции.
|
|||
38
Йохохо
17.12.14
✎
13:21
|
(36) попал (37) контрольный
|
|||
39
К_Дач
17.12.14
✎
13:26
|
||||
40
Salimbek
17.12.14
✎
13:39
|
(0) Для N параметров:
Выбрать Т1.Элемент, Т2.Элемент, ..., ТN.Элемент из (Выбрать Элемент из Таблица Где Параметр=1 Сгруппировать По Элемент) Как Т1, (Выбрать Элемент из Таблица Где Параметр=2 Сгруппировать По Элемент) Как Т2, ..., (Выбрать Элемент из Таблица Где Параметр=N Сгруппировать По Элемент) Как ТN Т.е. сначала получаешь выборку всех параметров, потом динамически строишь по выборке этот запрос. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |