diff --git a/polar_sequence.hh b/polar_sequence.hh index 90a3096..3c46905 100644 --- a/polar_sequence.hh +++ b/polar_sequence.hh @@ -36,5 +36,26 @@ public: } }; +template +class ReedMullerSequence +{ + MergeSort sort; +public: + void operator()(int *sequence, int level) + { + assert(level <= MAX_M); + int length = 1 << level; + for (int i = 0; i < length; ++i) + sequence[i] = i; + sort(sequence, length, [](int a, int b){ + int x = __builtin_popcount(a); + int y = __builtin_popcount(b); + if (x != y) + return x < y; + return a < b; + }); + } +}; + }