#include <iostream>
enum class ColumnEnum {
Column1=0, Column2, Column3, Column4, Column5, Column6, Column7
};
uint64_t map(uint64_t x, ColumnEnum c)
{
x = (x >> (7 - static_cast<int>(c))) & 0x0101010101010101uLL;
x = (x | (x >> 7)) &0x00FF00FF00FF00FFuLL;
x = (x | (x >> 14))&0x000000FF000000FFuLL;
x = (x | (x >> 28))&0x00000000000000FFuLL;
return x << 56;
}
int main()
{
uint64_t matrice = 0x4040400040400040uLL;
uint64_t matrice_2 = map(matrice, ColumnEnum::Column2);
std::cout << std::hex << matrice_2 << '\n';
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKZW51bSBjbGFzcyBDb2x1bW5FbnVtIHsKICBDb2x1bW4xPTAsIENvbHVtbjIsIENvbHVtbjMsIENvbHVtbjQsIENvbHVtbjUsIENvbHVtbjYsIENvbHVtbjcKfTsKCnVpbnQ2NF90IG1hcCh1aW50NjRfdCB4LCBDb2x1bW5FbnVtIGMpCnsKICB4ID0gKHggPj4gKDcgLSBzdGF0aWNfY2FzdDxpbnQ+KGMpKSkgJiAweDAxMDEwMTAxMDEwMTAxMDF1TEw7CiAgeCA9ICh4IHwgKHggPj4gNykpICYweDAwRkYwMEZGMDBGRjAwRkZ1TEw7CiAgeCA9ICh4IHwgKHggPj4gMTQpKSYweDAwMDAwMEZGMDAwMDAwRkZ1TEw7CiAgeCA9ICh4IHwgKHggPj4gMjgpKSYweDAwMDAwMDAwMDAwMDAwRkZ1TEw7CiAgcmV0dXJuIHggPDwgNTY7Cn0KCgppbnQgbWFpbigpCnsKICB1aW50NjRfdCBtYXRyaWNlID0gMHg0MDQwNDAwMDQwNDAwMDQwdUxMOwogIHVpbnQ2NF90IG1hdHJpY2VfMiA9IG1hcChtYXRyaWNlLCBDb2x1bW5FbnVtOjpDb2x1bW4yKTsKICBzdGQ6OmNvdXQgPDwgc3RkOjpoZXggPDwgbWF0cmljZV8yIDw8ICdcbic7Cn0=