QR codes are a popular way to encode data for easy reading by computerized cameras. True QR codes contain error correction, format specifiers, version information, and a size variable layout that makes them harder to decode and process. For ease we have created our own QR codes called QR2 codes that are simpler to decode and contain more data. QR2 codes contain the same position markers as QR codes, but the intervening data is encoded differently.
The new code is useful, but not compatible with QR codes, and so a program is needed to encode/decode the information. Each character of the text within the code is composed of 8 bits in standard ASCII encoding. A filled-in block denotes a 1 bit; a blank block denotes a 0 bit. Blocks are placed so that the most significant bit is first, and the entire message is read in serpentine fashion (up one column, then down the next, etc.), starting at the lower right. For example, in the sample run below, 'M' (01001101b) can be read up the right column, followed by 'y' (01111001b). The structure of the QR2 code is as described in the graphic above. Write a Java program will input a message and generate the appropriate QR2 code pattern. Each filled-in block is denoted by ## (two characters), and each empty block with 2 spaces. Do not worry about error checking. The size of the generated QR2 pattern will depend on the size of message entered.