1. Write a script to generate a N x N "bitmap" image. Ask the user for the value of N, then randomly generate a bit (1 for white and 0 for black) and output the result to a file. Use a space as a delimiter. 2. Implement Run Length Encoding of "bitmap" images (see RLE info on today's page). Let "1" be the white color and "0" black. A "run" is the number of consecutive pixels of the same color. We assume that the compressed output always starts with a run of white pixels. If the image starts with a black pixel, the the first run will be 0. The compression can be done row-by-row, column-by-column, or zig-zag. Your program should read in a "bitmap" image, ask the user for the compression type and output a compressed stream, consisting of runs of pixels. Test your program with images generated in part 1. 3. Write a script to decompress the RLE stream, i.e. given runs of pixels, reconstruct the original "bitmap". 4. Write a script that reads a "bitmap" and performs row-by-row, column-by-column and zig-zag RLE. The script should output the RLE stream that gives the best compression ratio.