#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
// A helper function, which is performed very very rare.
void SaveCode (const uint8_t length, const uint64_t code);
int main (int argc, char * argv [])
{
const uint32_t sideLobeLimit= 1;
const uint32_t length = 13;
const uint64_t mask = (1ull << length) - 1ull;
uint64_t code = 1ull << (length - 1ull);
do {
uint32_t shift = 1;
do {
if (abs ( (__builtin_popcountll ( (code & (mask >> shift) ) ^ (code >> shift) ) << 1) - length + shift) > sideLobeLimit) {
goto NEXT_CODE;
}
}
while (++shift < length);
SaveCode (length, code);
NEXT_CODE:;
}
while (++code <= (1ull << length) - 1ull);
return EXIT_SUCCESS;
}
void SaveCode (const uint8_t length, const uint64_t code)
{
uint8_t i = 0;
for (i = 0; i < length; ++i) {
(code >> i) & 0x01 ? printf ("+") : printf ("-");
}
printf ("\n");
}
I2luY2x1ZGUgPHN0ZGludC5oPgojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1ZGUgPHN0ZGxpYi5oPgogICAKLy8gQSBoZWxwZXIgZnVuY3Rpb24sIHdoaWNoIGlzIHBlcmZvcm1lZCB2ZXJ5IHZlcnkgcmFyZS4Kdm9pZCBTYXZlQ29kZSAoY29uc3QgdWludDhfdCBsZW5ndGgsIGNvbnN0IHVpbnQ2NF90IGNvZGUpOwogICAgCiAgICAKaW50IG1haW4gKGludCBhcmdjLCBjaGFyICogYXJndiBbXSkKewogICAgY29uc3QgdWludDMyX3Qgc2lkZUxvYmVMaW1pdD0gIDE7CiAgICBjb25zdCB1aW50MzJfdCBsZW5ndGggICAgICAgPSAxMzsKICAgIAogICAgY29uc3QgdWludDY0X3QgbWFzayAgICAgICAgID0gKDF1bGwgPDwgIGxlbmd0aCkgLSAxdWxsOwogICAgdWludDY0X3QgICAgICAgY29kZSAgICAgICAgID0gIDF1bGwgPDwgKGxlbmd0aCAgLSAxdWxsKTsKICAgIGRvIHsKICAgICAgICB1aW50MzJfdCBzaGlmdCA9IDE7CiAgICAgICAgZG8gewogICAgICAgICAgICBpZiAoYWJzICggKF9fYnVpbHRpbl9wb3Bjb3VudGxsICggKGNvZGUgJiAobWFzayA+PiBzaGlmdCkgKSBeIChjb2RlID4+IHNoaWZ0KSApIDw8IDEpIC0gbGVuZ3RoICsgc2hpZnQpID4gc2lkZUxvYmVMaW1pdCkgewogICAgICAgICAgICAgICAgZ290byBORVhUX0NPREU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgd2hpbGUgKCsrc2hpZnQgPCBsZW5ndGgpOwogICAgICAgIFNhdmVDb2RlIChsZW5ndGgsIGNvZGUpOwogICAgICAgIE5FWFRfQ09ERTo7CiAgICB9CiAgICB3aGlsZSAoKytjb2RlIDw9ICgxdWxsIDw8IGxlbmd0aCkgLSAxdWxsKTsKICAgIAogICAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsKfQogICAgCiAgICAKdm9pZCBTYXZlQ29kZSAoY29uc3QgdWludDhfdCBsZW5ndGgsIGNvbnN0IHVpbnQ2NF90IGNvZGUpCnsKICAgIHVpbnQ4X3QgaSA9IDA7CiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKICAgICAgICAoY29kZSA+PiBpKSAmIDB4MDEgPyBwcmludGYgKCIrIikgOiBwcmludGYgKCItIik7CiAgICB9CiAgICBwcmludGYgKCJcbiIpOwp9