Sunteți pe pagina 1din 5

import java.util.

*; class Fifteen_puzzle { static int lright=0,lleft=0,ltop=0,ldown=0,count[]=new int[4]; public static void main(String args[]) { Scanner input=new Scanner(System.in); String array[]=new String[16]; int i; System.out.println("\n\t\t===============15 puzzle problem============== ====="); System.out.println("\nEnter the numbers in the puzzle (Enter 'E' for emp ty space):\n"); for(i=0;i<array.length;i++) { array[i]=input.nextLine(); } System.out.println("\nThe data that you have inserted:"); display(array); setPosition(array); } private static void display(String[] array) { int i; System.out.println("\n"); for(i=0;i<array.length;i++) { if(i<=3 ((i<=7)&&(i>4)) ((i>8)&&(i<=11)) ((i>12)&&(i<=16))) System.out.print(array[i]+" "); else if(i==4 i==8 i==12) System.out.print("\n"+array[i]+" "); } } private static void setPosition(String[] array) { for(int i=0;i<count.length;i++) count[i]=20; String array1[],array2[],array3[],array4[]; array1=new String[16]; array2=new String[16]; array3=new String[16]; array4=new String[16]; for(int i=0;i<array.length;i++) { array1[i] = array[i]; array2[i] = array[i]; array3[i] = array[i]; array4[i] = array[i]; } if(array[0].equalsIgnoreCase("1")&&array[1].equalsIgnoreCase("2")&&array [2].equalsIgnoreCase("3")&&array[3].equalsIgnoreCase("4")&&array[4].equalsIgnore Case("5")&&array[5].equalsIgnoreCase("6")&&array[6].equalsIgnoreCase("7")&&array [7].equalsIgnoreCase("8")&&array[8].equalsIgnoreCase("9")&&array[9].equalsIgnore Case("10")&&array[10].equalsIgnoreCase("11")&&array[11].equalsIgnoreCase("12")&& array[12].equalsIgnoreCase("13")&&array[13].equalsIgnoreCase("14")&&array[14].eq ualsIgnoreCase("15")&&array[15].equalsIgnoreCase("E"))

{ System.out.println("\n\tPROBLEM SOLVED SUCCESSFULLY"); System.exit(0); } int position,right,left,top,down,smallest=0,i; position=getPosition(array); if(position==0) { System.out.println("Invalid input(No Empty space) : program will be t erminated"); System.exit(0); } right=checkRight(array,position); left=checkLeft(array,position); top=checkTop(array,position); down=checkdown(array,position); if(lright==1) left=0; if(lleft==1) right=0; if(ltop==1) down=0; if(ldown==1) top=0; if(right==1) { String t; int c=0; t=array1[position-1]; array1[position-1]=array1[position]; array1[position]=t; for(i=0;i<array1.length-1;i++) { if(!array1[i].equalsIgnoreCase((i+1)+"")) c=c+1; } count[0]=c; } if(left==1) { String t; int c=0; t=array2[position-1]; array2[position-1]=array2[position-2]; array2[position-2]=t; for(i=0;i<array2.length-1;i++) { if(!array2[i].equalsIgnoreCase((i+1)+"")) c=c+1; } count[1]=c; } if(top==1) { String t; int c=0; t=array3[position-1]; array3[position-1]=array3[position-5]; array3[position-5]=t;

for(i=0;i<array3.length-1;i++) { if(!array3[i].equalsIgnoreCase((i+1)+"")) c=c+1; } count[2]=c; } if(down==1) { String t; int c=0; t=array4[position-1]; array4[position-1]=array4[position+3]; array4[position+3]=t; for(i=0;i<array4.length-1;i++) { if(!array4[i].equalsIgnoreCase((i+1)+"")) c=c+1; } count[3]=c; } if(count[0]!=20) smallest=count[0]; else if(count[1] != 20) smallest=count[1]; else if(count[2] != 20) smallest=count[2]; else if(count[3] != 20) smallest=count[3]; for(i=0;i<count.length;i++) { if(count[i]<smallest&&count[i]!=20) smallest=count[i]; } System.out.println("\n\nThe next step is:"); if(smallest==count[0]) { lright=1; lleft=0; ltop=0; ldown=0; display(array1); setPosition(array1); } if(smallest==count[1]) { lright=0; lleft=1; ltop=0; ldown=0; display(array2); setPosition(array2); } if(smallest==count[2]) { lright=0;

lleft=0; ltop=1; ldown=0; display(array3); setPosition(array3); } if(smallest==count[3]) { lright=0; lleft=0; ltop=0; ldown=1; display(array4); setPosition(array4); } } private static int getPosition(String[] array) { int i; for(i=0;i<array.length;i++) { if(array[i].equalsIgnoreCase("E")) return(i+1); } return 0; } private static int checkRight(String[] array, int position) { if(position==4 position==8 position==12 position==16) return 0; else return 1; } private static int checkLeft(String[] array,int position) { if(position==1 position==5 position==9 position==13) return 0; else return 1; } private static int checkTop(String[] array,int position) { if(position==1 position==2 position==3 position==4) return 0; else return 1; } private static int checkdown(String[] array, int position) { if(position==13 position==14 position==15 position==16) return 0; else return 1; }

S-ar putea să vă placă și