- /* 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