Альтернативный способ получить все кортежи основан на целочисленном представлении k-базы.
Если вы берете k-базовое представление всех целых чисел от 0 до n^k - 1
, оно дает вам весь возможный набор k индексов, зная, что эти индексы начинаются с 0.
Теперь реализовать эту идею довольно просто. Вы можете использовать dec2base
, если k
меньше 10:
X = A(dec2base(0:(n^k-1), k)-'0'+1));
Для k
между 10 и 36 вы все равно можете использовать dec2base
, но вы должны позаботиться о буквах, так как между порядковыми кодами между '9' и 'A' есть пробел:
X = A(dec2base(0:(n^k-1), k)-'0'+1));
X(X>=17) = X(X>=17)-7;
Выше 36 вы должны использовать специальный код для получения представления целого числа, например this . Но ИМО вам может и не понадобиться, так как 2 ^ 36 довольно велико.