#include <stdio.h>
unsigned compress_maskA9_reversed1(unsigned x)
{
// result: he00 | 00ca;
return (((x & 0x09)*0x88000000 >> 28) & 0x0C) | (((x & 0xA0)*0x04800000) >> 30);
}
unsigned compress_maskA9_reversed2(unsigned x)
{
return ((x & 0xA8)*0x12400000 >> 29) | (x & 0x01) << 3; // result: 0eca | h000
}
int main(void) {
// your code goes here
unsigned i;
for (i = 0; i < 256; ++i)
{
// abcdefgh -> 0000heca
unsigned r = (i & 0x01) << 3 | (i & 0x08) >> 1 | (i & 0x20) >> 4 | (i >> 7);
if (compress_maskA9_reversed1(i) != r)
{
printf("(1) Error at %u\n", i
); }
if (compress_maskA9_reversed2(i) != r)
{
printf("(2) Error at %u\n", i
); }
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+Cgp1bnNpZ25lZCBjb21wcmVzc19tYXNrQTlfcmV2ZXJzZWQxKHVuc2lnbmVkIHgpCnsKICAgIC8vIHJlc3VsdDogaGUwMCB8IDAwY2E7CiAgICByZXR1cm4gKCgoeCAmIDB4MDkpKjB4ODgwMDAwMDAgPj4gMjgpICYgMHgwQykgfCAoKCh4ICYgMHhBMCkqMHgwNDgwMDAwMCkgPj4gMzApOwp9Cgp1bnNpZ25lZCBjb21wcmVzc19tYXNrQTlfcmV2ZXJzZWQyKHVuc2lnbmVkIHgpCnsKICAgIHJldHVybiAoKHggJiAweEE4KSoweDEyNDAwMDAwID4+IDI5KSB8ICh4ICYgMHgwMSkgPDwgMzsgLy8gcmVzdWx0OiAwZWNhIHwgaDAwMAp9CgppbnQgbWFpbih2b2lkKSB7CgkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCgl1bnNpZ25lZCBpOwoJcHJpbnRmKCJTdGFydFxuIik7Cglmb3IgKGkgPSAwOyBpIDwgMjU2OyArK2kpCgl7CgkJLy8gYWJjZGVmZ2ggLT4gMDAwMGhlY2EKCQl1bnNpZ25lZCByID0gKGkgJiAweDAxKSA8PCAzIHwgKGkgJiAweDA4KSA+PiAxIHwgKGkgJiAweDIwKSA+PiA0IHwgKGkgPj4gNyk7CgkJaWYgKGNvbXByZXNzX21hc2tBOV9yZXZlcnNlZDEoaSkgIT0gcikKCQl7CgkJCXByaW50ZigiKDEpIEVycm9yIGF0ICV1XG4iLCBpKTsKCQl9CgkJaWYgKGNvbXByZXNzX21hc2tBOV9yZXZlcnNlZDIoaSkgIT0gcikKCQl7CgkJCXByaW50ZigiKDIpIEVycm9yIGF0ICV1XG4iLCBpKTsKCQl9Cgl9CglwcmludGYoIkZpbmlzaGVkXG4iKTsKCQoJcmV0dXJuIDA7Cn0K