35#include <gtest/gtest.h>
45 for (
int i = 0; i < 10; i++)
60 for (
int i = 0; i < 924; i++)
75 for (
int i = 0; i < 1; i++)
90 for (
int i = 0; i < 116280; i++)
105 for (
int i = 0; i < 1; i++)
116 if (a.size() != b.size())
return false;
117 for (
size_t i = 0; i < a.size(); i++)
118 if (a[i] != b[i])
return false;
127 const int n_choose_p = 116280;
133 for (
size_t i = 0; i <
p; i++) b[i] = i;
135 for (
size_t i = 0; i < n_choose_p; i++)
143 EXPECT_EQ(ret, i + 1 != n_choose_p);
152 const int n_choose_p = 35;
161 if ((
p % 2 == 1) && (q % 2 == 1))
165 for (
size_t i = 0; i < n_choose_p; i++)
169 for (
size_t j = 0; j < n_choose_p; j++)
175 if (ret1 == 0 || ret2 == 0)
177 EXPECT_EQ(ret1, ret2);
180 EXPECT_EQ(ret1, sign * ret2);
195 for (
size_t i = 0; i < 21; i++)
198 std::cout <<
"i=" << i <<
" set=";
200 std::cout << std::endl;
209 const int n_choose_p = 35;
215 for (
size_t i = 0; i < n_choose_p; i++)
218 std::cout <<
"i=" << i <<
"set=";
220 std::cout <<
" bds= ";
221 for (
size_t j = 0; j <
p; j++)
228 std::cout << std::endl;
bool sameSubset(const Subset &a, const Subset &b)
static bool increment(size_t n, Subset &s)
bool isValid(const Subset &a)
static int concatenateSubsets(const Subset &s, const Subset &t, Subset &result)
size_t encode(const Subset &a)
void decode(size_t val, Subset &result)
size_t encodeBoundary(size_t index, const Subset &a)
static void show(std::ostream &o, const Subset &a)
Bijective integer encoding of q-subsets of {0, ..., n-1} via binomial(a_0, 1) + binomial(a_1,...
std::vector< size_t > Subset
Subsets — combinatorial-number-system encoding of p-subsets of {0,...,n-1}.