Как обобщать комбинации - PullRequest
3 голосов
/ 09 апреля 2019

Работа по автоматическому генерированию файлов конфигурации. У меня есть комбинации с 3 факторами:

{a1,m1,c1}
{a1,m1,c2}
{a1,m2,c1}
{a2,m1,c1}
{a2,m1,c2}

Теперь я хочу «сжать» эти 5 выражений до как можно меньшего числа выражений, в данном случае 2 - это минимум (порядок не имеет значения):

{{c1,c2},{m1},{a1,a2}} 
{{c1},{m2},{a1}}

Как мы видим, мы можем легко генерировать оригинальные комбинации из сжатых выражений.

У меня вопрос: как обобщить алгоритм сжатия комбинаций до наименьшего числа выражений?

У меня более сложный случай с 4 или 5 факторами.

Я полагаю, что для этого существует алгоритм, не могли бы вы поделиться ссылкой на алгоритм?

Обновление:

Более общий случай с двумя факторами:

Использование

{a1,a2,a3} {c1,c2,c3}

мы можем сгенерировать

{a1,c1} {a1,c2} {a1,c3}, {a2,c1} {a2,c2} {a2,c3} {a3,c1} {a3,c2} {a3,c3} 

Как я могу вывести

{{a1,a2,a3},{c1,c2,c3}}

от

{a1,c1} {a1,c2} {a1,c3}, {a2,c1} {a2,c2} {a2,c3} {a3,c1} {a3,c2} {a3,c3}
...