давайте предположим, что у меня есть следующая логическая матрица:
log = [1 1 0;
0 1 1;
1 0 1;
0 0 1];
столбцы описывают что-то вроде корзины, а одиночные строки описывают некоторые объекты, идентифицируемые определенным атрибутом (например, шары разных цветов), которые вы можете поместить в эти корзины. 1
означает, что вы можете положить его (в корзину, указанную в колонке), 0
вы не можете.
Каждая корзина может содержать только ОДИН объект одновременно.
Мне интересно, как вычислить перестановки о том, как вставить объекты для заданных конфигураций, это означает, что я говорю: I want to have objects in basket 1 and 3 but none in basket 2, which would be [1 0 1]
:
Итак, у меня есть следующие возможности:
- корзина 2: 0 товаров
- корзина 1: может содержать объект 1 или объект. 3
- корзина 3: может содержать любой объект 2, объект. 3 или объект 4
итак, у меня есть полные перестановки (одна строка описывает одну перестановку, столбец описывает корзины, а число описывает объект):
1 0 2
1 0 3
1 0 4
2 0 2
2 0 3
2 0 4
как превратить это в хороший алгоритм, который адаптируется к произвольному количеству корзин и объектов? я могу думать только о вложенных и некрасивых циклах :(
Большое спасибо!