Все комбинации элементов массивов

297
29 сентября 2018, 06:00

Мне нужно получить всевозможные комбинации элементов массивов. Например, есть массив а(1,2,3), б(4,5,6), с(7,8). Мне нужно получить на выходе (1,4,7), (1,4,8), ..., (3,6,8). При этом количество массивов а,б,с неизвестно, т.е. их может быть 2,3,4,... Порядок, в котором будут получать эти комбинации не важен.

Answer 1

Можно использовать рекурсию - на каждом уровне перебирать все элементы одного из массивов.

А можно сделать цикл со счётчиком от нуля до произведения размерностей массивов. А внутри цикла представить счётчик в системе счисления по переменному основанию (k-я "цифра" соответствует индексу элемента, взятого из k-го массива). В данном случае, например, i = 8 = 1*6+1*2+0 соответствует комбинации (2,5,7)

А вообще эта задача называется "декартово произведение множеств"

READ ALSO
Принцип работы Array.prototype.concat()

Принцип работы Array.prototype.concat()

Для скрипта в Adobe Photoshop, есть диалоговое окно с элементами выбора и управления:

349
Сокращение объема кода по работе с табами (скрытие/отображение)

Сокращение объема кода по работе с табами (скрытие/отображение)

Есть табы, которые скрыты, при клике по элементу с нужным атрибутом, таб появляетсяКак такой код, можно сократить? Причём, чем короче получится,...

258
Webasyst: ошибка в шаблоне

Webasyst: ошибка в шаблоне

Syntax Error in template "/public_html/wa-apps/shop/plugins/filters/templates/frontendHeadhtml" on line 2 "<script>loadEvents

227