?? diamond.java
字號(hào):
import java.io.*;
public class Diamond{
public int diamond[];
public int objDiamond[];
public int blank;
public int lt;
public int upValue(int num){
int sum=0;
switch(num){
case 3:if(this.diamond[3]==this.objDiamond[0])sum++;
if(this.diamond[1]==this.objDiamond[1])sum++;
if(this.diamond[2]==this.objDiamond[2])sum++;
break;
case 4:if(this.diamond[4]==this.objDiamond[1])sum++;
if(this.diamond[0]==this.objDiamond[0])sum++;
if(this.diamond[2]==this.objDiamond[2])sum++;
break;
case 5:if(this.diamond[5]==this.objDiamond[2])sum++;
if(this.diamond[0]==this.objDiamond[0])sum++;
if(this.diamond[1]==this.objDiamond[1])sum++;
break;
case 6:if(this.diamond[6]==this.objDiamond[3])sum++;
if(this.diamond[4]==this.objDiamond[4])sum++;
if(this.diamond[5]==this.objDiamond[5])sum++;
break;
case 7:if(this.diamond[7]==this.objDiamond[4])sum++;
if(this.diamond[3]==this.objDiamond[3])sum++;
if(this.diamond[5]==this.objDiamond[5])sum++;
break;
case 8:if(this.diamond[8]==this.objDiamond[5])sum++;
if(this.diamond[3]==this.objDiamond[3])sum++;
if(this.diamond[4]==this.objDiamond[4])sum++;
break;
}
return sum;
}
public int downValue(int num){
int sum=0;
switch(num){
case 0:if(this.diamond[0]==this.objDiamond[3])sum++;
if(this.diamond[4]==this.objDiamond[4])sum++;
if(this.diamond[5]==this.objDiamond[5])sum++;
break;
case 1:if(this.diamond[1]==this.objDiamond[4])sum++;
if(this.diamond[3]==this.objDiamond[3])sum++;
if(this.diamond[5]==this.objDiamond[5])sum++;
break;
case 2:if(this.diamond[2]==this.objDiamond[5])sum++;
if(this.diamond[3]==this.objDiamond[3])sum++;
if(this.diamond[4]==this.objDiamond[4])sum++;
break;
case 3:if(this.diamond[3]==this.objDiamond[6])sum++;
if(this.diamond[7]==this.objDiamond[7])sum++;
if(this.diamond[8]==this.objDiamond[8])sum++;
break;
case 4:if(this.diamond[4]==this.objDiamond[7])sum++;
if(this.diamond[6]==this.objDiamond[6])sum++;
if(this.diamond[8]==this.objDiamond[8])sum++;
break;
case 5:if(this.diamond[5]==this.objDiamond[8])sum++;
if(this.diamond[6]==this.objDiamond[6])sum++;
if(this.diamond[7]==this.objDiamond[7])sum++;
break;
}
return sum;
}
public int leftValue(int num){
int sum=0;
switch(num){
case 1:if(this.diamond[1]==this.objDiamond[0])sum++;
if(this.diamond[3]==this.objDiamond[3])sum++;
if(this.diamond[6]==this.objDiamond[6])sum++;
break;
case 4:if(this.diamond[4]==this.objDiamond[3])sum++;
if(this.diamond[0]==this.objDiamond[0])sum++;
if(this.diamond[6]==this.objDiamond[6])sum++;
break;
case 7:if(this.diamond[7]==this.objDiamond[6])sum++;
if(this.diamond[0]==this.objDiamond[0])sum++;
if(this.diamond[3]==this.objDiamond[3])sum++;
break;
case 2:if(this.diamond[2]==this.objDiamond[1])sum++;
if(this.diamond[4]==this.objDiamond[4])sum++;
if(this.diamond[7]==this.objDiamond[7])sum++;
break;
case 5:if(this.diamond[5]==this.objDiamond[4])sum++;
if(this.diamond[1]==this.objDiamond[1])sum++;
if(this.diamond[7]==this.objDiamond[7])sum++;
break;
case 8:if(this.diamond[8]==this.objDiamond[7])sum++;
if(this.diamond[1]==this.objDiamond[1])sum++;
if(this.diamond[4]==this.objDiamond[4])sum++;
break;
}
return sum;
}
public int rightValue(int num){
int sum=0;
switch(num){
case 0:if(this.diamond[0]==this.objDiamond[1])sum++;
if(this.diamond[4]==this.objDiamond[4])sum++;
if(this.diamond[7]==this.objDiamond[7])sum++;
break;
case 3:if(this.diamond[3]==this.objDiamond[4])sum++;
if(this.diamond[1]==this.objDiamond[1])sum++;
if(this.diamond[7]==this.objDiamond[7])sum++;
break;
case 6:if(this.diamond[6]==this.objDiamond[7])sum++;
if(this.diamond[1]==this.objDiamond[1])sum++;
if(this.diamond[4]==this.objDiamond[4])sum++;
break;
case 1:if(this.diamond[1]==this.objDiamond[2])sum++;
if(this.diamond[5]==this.objDiamond[5])sum++;
if(this.diamond[8]==this.objDiamond[8])sum++;
break;
case 4:if(this.diamond[4]==this.objDiamond[5])sum++;
if(this.diamond[2]==this.objDiamond[2])sum++;
if(this.diamond[8]==this.objDiamond[8])sum++;
break;
case 7:if(this.diamond[7]==this.objDiamond[8])sum++;
if(this.diamond[2]==this.objDiamond[2])sum++;
if(this.diamond[5]==this.objDiamond[5])sum++;
break;
}
return sum;
}
public void mov(){
switch(this.blank){
case 0:
if(leftValue(1)>upValue(3)&&this.lt!=3){
this.diamond[0]=this.diamond[1];this.diamond[1]=0;this.blank=1;this.lt=1;}
else if(this.lt!=9){this.diamond[0]=this.diamond[3];this.diamond[3]=0;this.blank=3;this.lt=2;}
break;
case 1:
if(rightValue(0)>=upValue(4)&&rightValue(0)>=leftValue(2)&&this.lt!=1){
this.diamond[1]=this.diamond[0];this.diamond[0]=0;this.blank=0;this.lt=3;}
else
if(upValue(4)>=rightValue(0)&&upValue(4)>=leftValue(2)&&this.lt!=12){
this.diamond[1]=this.diamond[4];this.diamond[4]=0;this.blank=4;this.lt=4;}
else if(this.lt!=7){
this.diamond[1]=diamond[2];this.diamond[2]=0;this.blank=2;this.lt=5;}
break;
case 2:
if(rightValue(1)>=upValue(5)&&this.lt!=5){diamond[2]=diamond[1];diamond[1]=0;this.blank=1;this.lt=7;}
else if(this.lt!=16){this.diamond[2]=diamond[5];this.diamond[5]=0;this.blank=5;this.lt=8;}
break;
case 3:
if(downValue(0)>=upValue(6)&&downValue(0)>=leftValue(4)&&this.lt!=2){
this.diamond[3]=this.diamond[0];this.diamond[0]=0;this.blank=0;this.lt=9;}
else
if(upValue(6)>=downValue(0)&&upValue(6)>=leftValue(4)&&this.lt!=19){
this.diamond[3]=diamond[6];this.diamond[6]=0;this.blank=6;this.lt=10;}
else if(this.lt!=15){
this.diamond[3]=this.diamond[4];this.diamond[4]=0;this.blank=4;this.lt=11;}
break;
case 4:
if(downValue(1)>=upValue(7)&&downValue(1)>=leftValue(5)&&downValue(1)>=rightValue(3)&&this.lt!=4){
this.diamond[4]=this.diamond[1];this.diamond[1]=0;this.blank=1;this.lt=12;}
else
if(upValue(7)>=downValue(1)&&upValue(7)>=leftValue(5)&&upValue(7)>=rightValue(3)&&this.lt!=21){
this.diamond[4]=this.diamond[7];this.diamond[7]=0;this.blank=7;this.lt=13;}
else
if(leftValue(5)>=upValue(7)&&leftValue(5)>=downValue(1)&&leftValue(5)>=rightValue(3)&&this.lt!=18){
this.diamond[4]=this.diamond[5];this.diamond[4]=0;this.blank=4;this.lt=14;}
else if(this.lt!=11){
this.diamond[4]=this.diamond[3];this.diamond[3]=0;this.blank=3;this.lt=15;}
break;
case 5:
if(downValue(2)>=upValue(8)&&downValue(2)>=rightValue(4)&&this.lt!=8){
this.diamond[5]=this.diamond[2];this.diamond[2]=0;this.blank=2;this.lt=16;}
else
if(upValue(8)>=downValue(2)&&upValue(8)>=rightValue(4)&&this.lt!=25){
this.diamond[5]=this.diamond[8];this.diamond[8]=0;this.blank=8;this.lt=17;}
else if(this.lt!=14){
this.diamond[5]=this.diamond[4];this.diamond[4]=0;this.blank=4;this.lt=18;}
break;
case 6:
if(downValue(3)>=leftValue(7)&&this.lt!=10){
this.diamond[6]=this.diamond[3];this.diamond[3]=0;this.blank=3;this.lt=19;}
else if(this.lt!=22){this.diamond[6]=this.diamond[7];this.diamond[7]=0;this.blank=7;this.lt=20;}
break;
case 7:
if(downValue(4)>=rightValue(6)&&downValue(4)>=leftValue(8)&&this.lt!=13){
this.diamond[7]=this.diamond[4];this.diamond[4]=0;this.blank=4;this.lt=21;}
else
if(rightValue(6)>=downValue(4)&&rightValue(6)>=leftValue(8)&&this.lt!=20){
this.diamond[7]=this.diamond[6];this.diamond[6]=0;this.blank=6;this.lt=22;}
else if(this.lt!=24){
this.diamond[7]=this.diamond[8];this.diamond[8]=0;this.blank=8;this.lt=23;}
break;
case 8:
if(rightValue(7)>=downValue(5)&&this.lt!=23){
this.diamond[8]=this.diamond[7];this.diamond[7]=0;this.blank=7;this.lt=24;}
else if(this.lt!=17){this.diamond[8]=this.diamond[5];this.diamond[5]=0;this.blank=5;this.lt=25;}
break;
}
}
public boolean finish(){
for(int i=0;i<diamond.length;i++){
if(this.diamond[i]!=this.objDiamond[i])return false;
}
return true;
}
public void display(){
for(int i=0;i<diamond.length;i++){
System.out.print(this.diamond[i]+" ");
if((i+1)%3==0)System.out.println();
}
}
}
class test{
public static void main(String args[])throws IOException{
Diamond d=new Diamond();
d.diamond=new int[9];
d.objDiamond=new int[9];
int a[]={2,8,3,1,6,4,7,0,5};
int b[]={1,2,3,8,0,4,7,6,5};
for(int i=0;i<a.length;i++){
if(a[i]==0)d.blank=i;
d.diamond[i]=a[i];
}
for(int i=0;i<b.length;i++)
d.objDiamond[i]=b[i];
d.lt=999;
while(true){
d.display();
System.in.read();
System.in.read();
d.mov();
if(d.finish()){d.display();System.in.read();System.in.read();break;}
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -