Encontrar todas as combinações de conjuntos de possibilidades

Eu tenho vários conjuntos de matrizes que contêm matrizes adicionais que possuem valores anexados que eu uso para descobrir matemática. Para encontrar a melhor combinação dessas coisas, preciso misturar e combinar com essas matrizes. Eu já vi "soluções" semelhantes a isso, mas elas são geralmente de 1 array de profundidade, sem combinações / possibilidades reais. Então, para dar um exemplo.

Eu tenho conjuntos A, B e C. O conjunto A contém Aa, Ab, Ac e Ad. Aa contém um conjunto de valores. Extrapole isso para os outros. Aa só pode ser comparado com Ba e Ca. Como faço para escrever um programa para encontrar todas as combinações (ou seja, Aa, Ab, Cc, Bd em comparação com Ba, Cb, Ac, Bd e etc) para que eu possa comparar a matemática em cada combinação para encontrar a melhor? Nota: este é apenas um exemplo, eu não preciso disso especificamente para 3 conjuntos de 4 conjuntos de 4, ele precisa ser capaz de expandir.

Agora eu sei que não usei nomes muito significativos para minhas variáveis, mas eu apreciaria se qualquer código dado tivesse nomes significativos nele (eu realmente prefiro não seguir as variáveis ​​de x e c ao redor no código).

questionAnswers(2)

yourAnswerToTheQuestion