jweinst1
4/8/2020 - 7:27 AM

Calculating meta xor sequences in C++.

Calculating meta xor sequences in C++.

#include <cstdio>
#include <cstdlib>

template<unsigned long n>
struct XorSeq
{
    enum
    {
        value = n ^ XorSeq<n - 1>::value
    };
    
    void print() const {
        std::printf("%lu -> %lu\n", n, value);
    }
};

// base condition
template <>
struct XorSeq<0> {
    enum
    {
        value = 1
    };
};

int main(int argc, char const* argv[]) {
    XorSeq<2>().print();
    XorSeq<3>().print();
    XorSeq<4>().print();
    XorSeq<5>().print();
    XorSeq<6>().print();
    XorSeq<7>().print();
    XorSeq<9>().print();
    XorSeq<10>().print();
    XorSeq<11>().print();
    XorSeq<12>().print();
    XorSeq<13>().print();
    XorSeq<14>().print();
    XorSeq<15>().print();
    XorSeq<16>().print();
    XorSeq<31>().print();
    return 0;
}