|   |   | 
| 
 | Алгоритм получения всех комбинаций значений | ☑ | ||
|---|---|---|---|---|
| 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 Т.е. сначала получаешь выборку всех параметров, потом динамически строишь по выборке этот запрос. | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |