Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Please take your time to try the game and come up with a answer for it. 1.The Ru

ID: 2246838 • Letter: P

Question

Please take your time to try the game and come up with a answer for it.

1.The Rush Hour puzzle (also sometimes called Traffic Jam http://www.thinkfun.com/play-online/rush-hour/) is inspired by gridlock on city streets. Vehicles can move only forward and backward---they can't turn---and the object is to get the car represented by the red rectangle out through the opening at the right edge of the puzzle. (There are many other implementations of this puzzle on the web. Search for "rush hour" and "puzzle" to find them.)
Follow the link for more details and many example puzzles. For the questions above, assume that the puzzle contains 1-by-2-unit "cars" (including the red car) and 1-by-3-unit "trucks."

a. Describe states that make up the puzzle's state space and give an upper bound for the number of distinct states. Note that this bound may depend on the size of a puzzle instance.

b. Suggest a computer representation --- that is, data structure(s)--- for a puzzle state. Be explicit enough that you can answer part c precisely.

c. Given the representation you have described, what operators are necessary for transforming one state into another; that is, for implementing moves in the puzzle. Describe one representative operator in detail.

d. Suggest a heuristic state evaluation function that can guide a search of the puzzle's state space toward a/the goal state. Explain briefly why your heuristic is better than a blind search?

Explanation / Answer

package rushhour; import java.util.LinkedList; import framework.*; /* * A RushHour puzzle is a 6x6 matrix of characters. * The RushHour puzzle implements the Puzzle interface methods: * void initialPosition() * isGoal() * LinkedList legalMoves(Node node) * * The RushHour puzzle implements several helper methods * RushHour move(Move m) * boolean emptyMove(Move m, Node node) * boolean hasVehicle(pos_x, pos_y, vehicle, length, direction) * void placeVehicle(pos_x, pos_y, vehicle, length, direction) * public LinkedList transform() * * The RushHour puzzle implements equal and hashCode. The implementations override the * default ones inherited from Object. * */ public class RushHour implements Puzzle { char[][] matrix = new char[6][6]; public RushHour() { for (int i = 0; i