K-клинок в n-мерном пространстве имеет (n \ выбирать k) базисов.Например: пусть k = 3, n = 5, тогда наш 3-блейд в 5-пространстве может быть реализован как:
typedef long double real_t;
typedef struct blade_5d_3_t_
{
real_t e1e2e3; /* 1 */
real_t e1e2e4; /* 2 */
real_t e1e2e5; /* 3 */
real_t e1e3e4; /* 4 */
real_t e1e3e5; /* 5 */
real_t e1e4e5; /* 6 */
real_t e2e3e4; /* 7 */
real_t e2e3e5; /* 8 */
real_t e2e4e4; /* 9 */
real_t e3e4e5; /* 10 = 5 choose 3 */
}
blade_5d_3_t;
Этот тип blade_5d_3_t
означает 3-блейд в 5-пространстве.Мы можем реализовать blade_nd_k_t
таким же образом.
Если нужно реализовать все (k, n) блейдов для 0 <= n <= 5 и k <= n, то (5 + 1) *Необходимо реализовать 5/2 типов различных блэйдов. </p>
Теперь я хочу реализовать свои структуры блэйдов для некоторого большого n, а затем определить функции в пространстве блэйдов.
Возможно лидостичь своей цели элегантно в с?