Find all combinations from given ordered choices.
function getAllCombinations<T>(slotsChoices: T[][]) {
const searchSpaceSizes = slotsChoices.map(choices => choices.length)
const solutionSize = searchSpaceSizes.reduce((a, b) => a * b)
const slots = new Array(solutionSize).fill(slotsChoices)