/* package whatever; // don't place package name! */
/* The class name doesn't have to be Main, as long as the class is not public. */
class Main
{
{
new Main().test2();
}
void test2() {
final int grayCodeLength = 4;
// generate matrix
final int grayCodeCount = 1 << grayCodeLength; // = 2 ^ grayCodeLength
int grayCodeMatrix[][] = new int[grayCodeCount][grayCodeLength];
for (int i = 0; i < grayCodeCount; i++) {
int grayCode = (i >> 1) ^ i;
for (int j =0; j <grayCodeLength; j++) {
// extract bit
final int grayCodeBitMask = 1 << j;
grayCodeMatrix[i][j] = (grayCode & grayCodeBitMask) >> j;
}
}
// view result
for (int y = 0; y < grayCodeMatrix.length; y++) {
for (int x = 0; x < grayCodeMatrix[0].length; x++) {
System.
out.
print(grayCodeMatrix
[y
][x
]); }
}
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKLyogVGhlIGNsYXNzIG5hbWUgZG9lc24ndCBoYXZlIHRvIGJlIE1haW4sIGFzIGxvbmcgYXMgdGhlIGNsYXNzIGlzIG5vdCBwdWJsaWMuICovCmNsYXNzIE1haW4KewogIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbgogIHsKICAgICBuZXcgTWFpbigpLnRlc3QyKCk7CiAgfQoJCiAgICB2b2lkIHRlc3QyKCkgewogICAgICAgIAogICAgICAgIGZpbmFsIGludCBncmF5Q29kZUxlbmd0aCA9IDQ7CgogICAgICAgIC8vIGdlbmVyYXRlIG1hdHJpeAogICAgICAgIGZpbmFsIGludCBncmF5Q29kZUNvdW50ID0gMSA8PCBncmF5Q29kZUxlbmd0aDsgLy8gPSAyIF4gZ3JheUNvZGVMZW5ndGgKICAgICAgICBpbnQgZ3JheUNvZGVNYXRyaXhbXVtdID0gbmV3IGludFtncmF5Q29kZUNvdW50XVtncmF5Q29kZUxlbmd0aF07CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBncmF5Q29kZUNvdW50OyBpKyspIHsKICAgICAgICAgICAgaW50IGdyYXlDb2RlID0gKGkgPj4gMSkgXiBpOwogICAgICAgICAgICBmb3IgKGludCBqID0wOyAgaiA8Z3JheUNvZGVMZW5ndGg7IGorKykgewogICAgICAgICAgICAgICAgLy8gZXh0cmFjdCBiaXQKICAgICAgICAgICAgICAgIGZpbmFsIGludCBncmF5Q29kZUJpdE1hc2sgPSAxIDw8IGo7CiAgICAgICAgICAgICAgICBncmF5Q29kZU1hdHJpeFtpXVtqXSA9ICAoZ3JheUNvZGUgJiBncmF5Q29kZUJpdE1hc2spID4+IGo7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIC8vIHZpZXcgcmVzdWx0CiAgICAgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBncmF5Q29kZU1hdHJpeC5sZW5ndGg7IHkrKykgewogICAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IGdyYXlDb2RlTWF0cml4WzBdLmxlbmd0aDsgeCsrKSB7CiAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KGdyYXlDb2RlTWF0cml4W3ldW3hdKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJcbiIpOwogICAgICAgIH0KICAgIAogICAgICAgIAogICAgICAgIAogICAgfQp9