Как перебрать все варианты комбинаций #656341


#0 by mzelensky
Есть 5 массивов: М1,М2,М3,М4,М5. Каждый из них может быть пустым, а может содержать значения. Сгенерировать все варианты комбинаций вот такой маски: М1 М2  М4    М5     М4  М3  М1 Как видно из маски, элементы массивов М1 и М4 должны еще и внутри себя комбинироваться (т.е. каждый с каждым). КАК ТАКОЕ РЕАЛИЗОВАТЬ?!?!?!?!
#1 by bse
а подумать?
#2 by mzelensky
ну что, кто головоломки любит??? Лично я терпеть не могу :(
#3 by mzelensky
уже думаю!
#4 by Maxus43
все варианты комбинаций в запросе - это кросс джойн например, может туды копать?
#5 by mzelensky
там еще замутка в том, что какие-то массивы могут быть ПУСТЫМИ! Т.е., например М4 пуст, значит маска будет уже такая: М1 М2     М5    М3  М1 А если М4 и М2 пусты, то такая М1  М5  М3  М1 ...
#6 by Нога
Не передавать в запрос пустые может?
#7 by MSII
Все массивы соединить, из каждого выбрать значения, выбросить строки с NULL хотя бы в одной ячейке.
#8 by MSII
М1 и М4 соединить дважды. Выбирать значения только из непустых массивов (придется динамически тест запроса генерить).
#9 by 0xFFFFFF
Чет не уловил что надо
#10 by mzelensky
а как в соединении с делать фишку из с массивами М1 и М4 ? При это мне же нужно не просто все омбинации, а все комбинации по определенной маске!
#11 by НафНаф
ничего не понял
#12 by mzelensky
что не понятно??? озьмите листок с ручкой и попробуйте нарисовать, то о чем я говорил в .
#13 by MSII
А ты представь, что М1 и М4 - это не М1 и М4, а М6 и М7. И забудь про свою маску, просто получи все комбинации всех значений всех семи массивов.
#14 by mzelensky
мне об это забывать нельзя! Данная форма маски ОБЯЗАТЕЛЬНА и особенность М1 и М4 тоже обязательна!
#15 by mzelensky
т.е. мне нужно не просто ВСЕ варианты перебрать (варианты перестановок), а варианты перестановок по определенному правилу.
#16 by NS
Кодер он всегда алгоритмист. Придумывает сложнейшие алгоритмы. Например как сложить два числа. Как сравнить два числа. Даже цикл может придумать.
#17 by MSII
Чем отличаются массивы М1 и М6, если они содержат одинаковые значения?
#18 by NS
А когда вложенные циклы, или не дай бог перестановки и сочетания - это уже головоломка. Такое только академик может решить.
#19 by НафНаф
зачем кстати?
#20 by MSII
Смотри. Массив М1[89,108], остальные массивы пустые. Сколько комбинаций будет по твоему правилу?
#21 by 1Сергей
Рекурсией легко делается
#22 by mzelensky
каждый с каждым.
#23 by mzelensky
подскажи как! У меня пока ума хватает только на довольно сложные вложенные циклы
#24 by mzelensky
какая тебе разница зачем?
#25 by MSII
Ну вот, теперь забудь про свое правило. Массивов 7, М1[89,108] и М7[89,108], остальные пустые. Сколько будет комбинаций?
#26 by NS
Делается как угодно. Даже ребенок, совершенно незнакомый с программированием спокойно распишет все сочетания. А кодер всего лишь должен уметь готовый алгоритм расписать в виде кода. Алгоритм тут понятен. В чем могут быть проблемы?
#27 by MSII
Как только ты поймешь, что тебе просто нужны все комбинации значений 7 массивов, так сразу же станет легче.
#28 by mzelensky
да, с 7 соласен. Ток я сейчас начал не с запроса, а с циклов. Попробую сперва так.
#29 by mzelensky
кричать, что все просто и элементарно может "Даже ребенок". А ты возьми и сделай!
#30 by NS
На семерке - без учета возможности пустых массивов
#31 by NS
А чего тут делать? Алгоритм известен. Если ты кодер - просто напиши.
#33 by mzelensky
и что это будет?!
#34 by NS
Это будет то что ты просил. Выводиться все сочетания будут в виде строки. Не хочешь в виде строки, сделай в любой другой структуре.
#35 by vladimir-boy
а запросом соединить НЕ?
#37 by 1Сергей
Функция ВывестиКомбинации(Знач Массивы, Комбинация = Неопределено)
#38 by 1Сергей
а вообще, интересная задачка, спасибо :) Размял мозг
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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