Vacuum Rules Your program is a vacuum that cleans an arbitrary room of grid cells. Make your program an executible that will run from the command line. Invoke the driver with a list of clients on the command line. Example: vacDriver vacIdiot vacIdiot vacIdiot (You can read the driver source code for more information.) All communication with your program is via STDIN and STDOUT. On each turn, your vacuum will receive via STDIN as set of percepts. On each turn, your vacuum must respond within 1 second with an action. (Don't worry. 1 second is a long time.) The room is generated at random, on a square-cell pattern, with walls and furnishings filling some of the cells. The vacuum starts at a randomized location and must finish at that some location. The driver prompts the vacuum by sending a set of percepts. The percepts are, in order, radar-left, radar-front, radar-right, dirt, and home. Each is a binary quantity, with 1 representing true and 0 representing false. The percepts are space-separated and terminated by newline. For example, "1 0 0 1 0\n". The vacuum responds by giving a command. The valid commands are: "forward\n": move forward one cell, if possible, else do not move. "left\n": turn left 90 degrees, staying in the same cell. "right\n": turn right 90 degrees, staying in the same cell. "vacuum\n": pick up dirt in the current cell. "off\n": turn off, indicating the task is completed. For the benefit of human players, the driver will reply with "what?" in case an invalid command is entered. Robotic vacuums should not need this functionality. For the benefit of robot players, the driver will echo and ignore any line starting with a "#" mark. This allows the robot to make reports to its programmer. The driver creates a visual display of the vacuum's working, showing the starting random seed, a diagram of the room and vacuum, and a score to date. By using the same random seed, different vacuums can be compared. Score is -100 per dirt remaining, +100 per dirt captured, -1 per command issued, and +100 for ending in the proper cell (direction faced does not matter). Since it is anticipated that all vacuums will seek out all dirt and eliminate it, the score differences will be based on how quickly the task is accomplished. Setup: Download the vacDriver. chmod it to be executible. It is a tcl/expect program. Download the vadIdiot. chmod it to be executible. It is a perl program. On the command line, type the following command: ./vacDriver vacIdiot vacIdiot vacIdiot vacIdiot This will run the driver with four copies of the "idiot" sample program. (We call it the idiot because it just moves randomly with no planning.) Create your own program that will behave like the idiot, only lots smarter. Be prepared to submit it in class for competition with agents written by other students.