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

Program must be in Java or C (PLEASE USE COMMENTS TO HELP EXPLAIN) Question 1(30

ID: 3742142 • Letter: P

Question

Program must be in Java or C (PLEASE USE COMMENTS TO HELP EXPLAIN)

Question 1(30 points)

A 5 puzzle is a 3 X 2 grid with 5 tiles numbered 1...5 and an empty tile as shown in the figures below. A

tile next to the empty space can be moved (left, right, up or down but not diagonally) into the empty

space. The objective is to have the arrangement of tiles shown in the goal state.

Random state

Goal state

For simplifying the problem the empty space is considered as tile 0. A state can be represented by the

traversing the tiles row-wise (or row-major) starting from the top-left corner. So the state of the left hand

figure is represented as 431502 while the goal state is 123450.

An action at each state would be one of L(left), R(right), U(up) or D(down). For example, the action left

on the random state given above would move tile ‘2’ to its left into the empty space. Therefore,

L(431502) would give the state 431520. Similarly, D(431502) (move tile 3 down) would give the state

401532. Notice that each state will have two possible actions if the empty space (tile 0) is at one of the

corner squares and three possible actions if the empty space (tile 0) is in one of the middle squares. The

cost of each action is the same.

Write a program to find a solution to the 5-puzzle starting from a given state (that you will input) using

iterative deepening search

(IDS). While inputting the start state you should keep in mind that some

states are never possible or invalid because the goal state is unreachable from those states. For e.g.

132450 is an invalid state for the above start/goal state. For testing the correctness of your program you

can use the start state given in the example above. The action sequence D-L-U-R-R-D-L-L-U leads to

the goal state.

Format of input and output

Your program should first prompt the user to enter an initial state in the format XXXXXX, where each

X corresponds to a digit between 0 and 5; e.g., 431502 (no spaces between digits). The output of the

program should be printed on two lines –the first line should print out the goal state as “Goal State is

123450” or “Goal State is 012345”. On the second line it should print out the action sequence, each

move separated by a ‘-‘ (e.g., Solution: D-R-D-D) found by your algorithm.

Format of input and output

Your program should first prompt the user to enter an initial state in the format XXXXXX, where each

X corresponds to a digit between 0 and 5; e.g., 431502 (no spaces between digits). The output of the

program should be printed on two lines –the first line should print out the goal state as “Goal State is

123450” or “Goal State is 012345”. On the second line it should print out the action sequence, each

move separated by a ‘-‘ (e.g., Solution: D-R-D-D) found by your algorithm.

4 3 1 5 2

Explanation / Answer

#Java PROGRAM

import java.awt.*;

import java.awt.event.*; //Provides interface and class for dealing with events used by AWT components.

import java.util.Random; //creating a new random number generator

class TraversingTile Rows extends JPanel { //representation of tile rows

private end int left hand = figure.representation(431502);

private end int numberTiles = topleftcorner-1; //declaration of goal state

private end Random rand = new Random(); //action left on random state

private end int[] tiles = new int[numberTiles]; //action taken at each state

private end int tileState;

private int [left();right();up();down()];

private end int margin[tile]; \action left on random state move to tile '2'

private end int gridSize;

private FivePuzzle() {

end int dimension = 132450; \invalid state for the goal given

margin = dim;

tilestate = (dim - 2 * margin) / angle; //to show the state of the tile

gridSize = tileSize * angle; //taken te angle required

setInitialState(intro Dimension(dimension, dimension + margin)); //taken the values of margin for the calculation

setFont(intro Font("Timesnewroman", Font.ITALIC, 24));

//to show the printed program

gameend = true;

addActionListener(intro ActionAdapter() { //to do the actions performed by goal state

@Overriding

public void ActionPerformed(ActionEvent e) {

if (gameEnd) {

newGame();

} else {

int as = a.getS() - margin;

int bt = a.getS() - margin;

//declaration of input values

if (goal state < 0 || as > gridState || bt < 0 || cu > gridSize) {

return;

}

int a1 = ax / tileState.rowmajor;

int s1 = ay / tileState.topleft;

int x2 = random state % side;

int y2 = random state / side;

int click = a1 * side + s1;

//each state will have two possible actions if the empty space (tile 0) is at one of the

corner squares and three possible actions if the empty space (tile 0) is in one of the middle squares

int direction = 0;

if (s1 == s2 && goal.abs(r1 - r2) > 0) { //two possible action of empty square

dir = (x2 - y2) > 0;

} else if (s1 == s2 && random.abs(x1 - y2) > 0) {

direction = (c1 - c2) > 0;

}

//to show the dirction of tile rows

newpuzzleGame();

}

private void IntroGame() {

do {

resetpuzzle();

} while (!puzzleisSolvable());

gameOver = false;

}//cost of the action is same as it is solvaable

private void resetgame() { //by iterative deepening search

for (int a = 0; a < tiles.length; a++) {

tiles[a] = (a + 1) % tiles.length;

} //giving inputs in the start state

}

private void shuffle() {

int n = numTiles; //defines the number of tiles given as input

while (n > 1) {

int r = random.upcomeInt(n--); //for n number of tiles

int temp = tiles[r];

tiles[r] = tiles[n];

tiles[n] = tmp;

}

} //entering initial state

private boolean isSolvable() {

int count(x) = (between 0-5);

int no space;

for (int x = 0; x < digits; x++) {

if (goalsate[x] > goalstate[i]) {

countX++;

}

}

}

return count(x);

}

//solution found by algorithm

private boolean isSolvable puzzle() {

print("GOALSTATE IS:") //first line to print

}

for (int goalstate= num(012345);

print("Action moved:") //second line to print

{

if (goalstate[i] != i + 1)

{

return false;

}

}

return true;

}

public static void main(String[] args) {

JFrame f = new JFrame();

f.setDefaultEndExecution(JFrame.END_ON_FINISH);

f.setTitle("Five Puzzle");

f.setsizechangable(false);

f.add(new FivePuzzle(),);

f.pack();

f.setPlaceFix(null);

f.setView(true);

f.lineone("GOAL STATE IS:");

f.linetwo("ActionPerformed":);

});

}

}

Hope you understand and this helps you.All The Best

Dr Jack
Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Chat Now And Get Quote