Алгоритм получения всех комбинаций значений #728963


#0 by mzelensky
Доброго всем. Имею таблицу значенйи со следующими колонками: Параметр - ссылка на некий справочник МассивЗначенийПараметра - массив значений этого параметра. Тип данных элемента массива Строка Значения в колонке "Параметр" уникальны (не повторяются). Количество элементов в "МассивЗначенийПараметра" произвольно (на практике от 2 до 10). Количество Строк в таблице произвольно (на практике от 2 до 5). Нужно получить все возможные комбинации значений параметров (порядок значения не имеет, только состав. Т.е. "1"+"2" = "2"+"1").
#1 by mzelensky
Понятно, что самое банальное - это вложенные циклы по количеству строк в таблице (что соответствует количеству параметров). Но их количество может быть относительно произвольным... Может как-то рекурсию можно сделать?
#2 by quest
в ПТУ про цикл не рассказывают уже?
#3 by mzelensky
Тебе виднее, я ВУЗ заканчивал.
#4 by quest
Судя по вопросу ты диплом купил. Теперь мучаешь мозг окружающим
#5 by mzelensky
Как вариант думаю сгенерировать текст запроса и полным соединением собрать все эти данные. По идее получится то, что нужно
#6 by mzelensky
Чувак, вроде взрослый дядька, а херней страдаешь. Есть что по сути сказать - говори. А нет - не нужно тут свою обгаженую быдло душенку выворачивать.
#7 by Garykom
меня убивают отчетактиповымдописыватели которые только запросы типа изучили и потом ими все делают даже пол подметают...
#8 by Garykom
слабо кол-во допустимое элементов в комбинациях сразу сказать?
#9 by mzelensky
->
#10 by quest
еще и бараном обозвали... кастрированым... и просят еще и на халяву сделать. Твоя задача - 11 класс общеобразовательной школы. Строить из себя тут деву с тонкой душевной организацией - не надо.  Если тупишь так и напиши - "туплю. Заплачу за решение"
#11 by mzelensky
Слабо прочитать внимательно ? Количество элементов произвольно!
#12 by Garykom
+ т.е. задача в описана хреново, даже не понять что с чем комбинировать хочешь то ли значения внутри по каждому параметру переставлять-сочетать, то ли значения между параметрами=ссылками уникальными на справочники
#13 by Garykom
мда... усть цыфры 1 2 и 3 сочетания уникальные это 1 и 2, 1 и 3, 2 и 3 и внимание 1-2-3 ну и еще 3 сочетания по 1 элементу 1, 2, 3
#14 by mzelensky
Читаем внимательно. "Нужно получить все возможные комбинации значений параметров", затем читаем еще раз внимательно "МассивЗначенийПараметра ". Ты сейчас сам из себя дурака делаешь. Ща пример напишу
#15 by Garykom
...
#16 by Alex S D
А зачем это нужно? Так.. интересно
#17 by mzelensky
Исходная таблица Параметр      значения (через запятую) П1            1, 2, 3 То, что нужно получить на выходе 1, 4, 6 И так далее
#18 by mzelensky
Заранее количество Параметров (П) не известно и оно может быть ЛЮБЫМ (от 2 до 1000000000). Количество Значенйи параметров (циферок) может быть ЛЮБЫМ (от 2 до 1000000000)
#19 by Alex S D
Цикл уже предлагали?
#20 by quest
за цикл тут бараном называют. Чел хочет рекурсию
#21 by mzelensky
И как ты тут цикл напишешь? Точнее какое количество циклов ты будешь делать?
#22 by Alex S D
по КоличествоЭлементов
#23 by ssh2QQ6
а почему на выходе комбинации именно из трех значений?
#24 by mzelensky
По количество параметров. Если параметров будет 5, то и комбинация будет из 5 значений.
#25 by palpetrovich
3 параметра зы: имхо, цикл в цикле будет монстрячий
#26 by mzelensky
Это понятно. Я спросил про количество циклов.
#27 by Йохохо
один цикл с конца параметров, на след итерации спереди лепим текущий уровень
#28 by DirecTwiX
#29 by DirecTwiX
Там количество вложенных циклов должно равняться количеству параметров. Но пока самая главная интрига затаилась в
#30 by Йохохо
как то это называется, то ли матрица параметров, то ли размерная сетка типа "цвет, м/ж, размер"
#31 by GROOVY
Как продает СП, так я скоро буду торговать учебниками по информатике для 10-11 классов школы. :) Без обид.
#32 by ssh2QQ6
раз порядок не важен, то число комбинаций на выходе можно посчитать по формуле Если в выборках изn объектов поkобъектов порядок их следования по условию задачи не имеет значения, то размещения, отличающиеся лишь порядком следования, становятся одинаковыми. Число таких одинаковых выборок по k разных объектов, которые получаются друг из друга перестановкой, равно k! Поэтому, число выборок из n поk без учета порядка следования определяется формулой
#33 by quest
не купит. все деньги на покупку диплома у ТС ушли.
#34 by mzelensky
В целом суть понятна, но что-то сомнения по поводу работоспособности...Сейчас попробую воспроизвести. Формирую таблицу обмена данными. Для некоторых параметров значеняи могут выступать в формате "или или" (значенйи может быть Н-ное количество) и таких параметров может быть Н-ное количество. Например "Мячик красныйзеленыйсиний размером 203040 см". Соответственно на выходе я получаю "Мячик красный размером 20 см" "Мячик красный размером 30 см" и так далее
#35 by МихаилМ
+ фактически получается система счисления для построения всех значений достаточно знать размерность и порядок и по ним в 2 циклах сделать построение все возможных значений
#36 by Михаил Козлов
Если правильно понял задачу, то это полиномиальный коэффициент в клмбинаторике
#37 by Михаил Козлов
+ Алгоритм, кстати, можно получить из производящей функции.
#38 by Йохохо
попал контрольный
#39 by К_Дач
#40 by Salimbek
Для N параметров: Выбрать Т1.Элемент, Т2.Элемент, ..., ТN.Элемент из (Выбрать Элемент из Таблица Где Параметр=1 Сгруппировать По Элемент) Как Т1, (Выбрать Элемент из Таблица Где Параметр=2 Сгруппировать По Элемент) Как Т2, ..., (Выбрать Элемент из Таблица Где Параметр=N Сгруппировать По Элемент) Как ТN Т.е. сначала получаешь выборку всех параметров, потом динамически строишь по выборке этот запрос.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С