📄 puzzlecoz.java
字号:
import java.util.*;
public class PuzzleCoz {
Vector tree= new Vector(),path = new Vector();
int k=0;
Node kopyaNode;
public PuzzleCoz(Node node){
tree.add(0,node);
path = cozumuAl(puzzleCoz());
}
private Node degistir(Node node, int a , int b){
int t1=0,t2=0;
for(int i=0;i<9;i++){
if(node.sira[i]==a)
t1=i;
if(node.sira[i]==b)
t2=i;
}
int temp = node.sira[t1];
node.sira[t1]=node.sira[t2];
node.sira[t2]=temp;
return node;
}
public Node kopyala(Node node){
int sira[]=new int[9];
for(int i=0;i<9;i++){
sira[i] = node.sira[i];
}
Node kopyala = new Node(sira);
return kopyala;
}
public int dugumOlustur(Node node, int root, int k){
Node node1 = (Node)tree.get(node.root);
int pre = node1.sira[0];
int bos = node.sira[0];
switch(bos){
case 0:
if(pre != 2){
kopyaNode = kopyala(node);
kopyaNode.root = root;
tree.add(++k,degistir(kopyaNode,0,2));
}if(pre != 4){
kopyaNode = kopyala(node);
kopyaNode.root = root;
tree.add(++k,degistir(kopyaNode,0,4));
}if(pre != 6){
kopyaNode = kopyala(node);
kopyaNode.root = root;
tree.add(++k,degistir(kopyaNode,0,6));
}if(pre != 8){
kopyaNode = kopyala(node);
kopyaNode.root = root;
tree.add(++k,degistir(kopyaNode,0,8));
}
break;
case 1:
if(pre != 2){
kopyaNode = kopyala(node);
kopyaNode.root = root;
tree.add(++k,degistir(kopyaNode,1,2));
}if(pre != 8){
kopyaNode = kopyala(node);
kopyaNode.root = root;
tree.add(++k,degistir(kopyaNode,1,8));
}
break;
case 2:
case 4:
case 6:
case 8:
if(pre != (bos-1)%8){
kopyaNode = kopyala(node);
kopyaNode.root = root;
tree.add(++k,degistir(kopyaNode,bos,(bos-1)%8));
}if(pre != 0){
kopyaNode = kopyala(node);
kopyaNode.root = root;
tree.add(++k,degistir(kopyaNode,bos,0));
}if(pre != (bos+1)%8){
kopyaNode = kopyala(node);
kopyaNode.root = root;
tree.add(++k,degistir(kopyaNode,bos,(bos+1)%8));
}
break;
case 3:
case 5:
case 7:
if(pre != (bos-1)){
kopyaNode = kopyala(node);
kopyaNode.root = root;
tree.add(++k,degistir(kopyaNode,bos,bos-1));
}
if(pre != (bos+1)){
kopyaNode = kopyala(node);
kopyaNode.root = root;
tree.add(++k,degistir(kopyaNode,bos,bos+1));
}
break;
}
return k;
}
public int puzzleCoz(){
Node nod;
int k=0,bas=0,son=0,ok=0,depth=12;
do{
for(int i=bas;i<=son;i++){
nod = (Node)tree.get(i);
k = dugumOlustur(nod, i ,k);
}
for(int i=bas;i<=son;i++){
nod = (Node)tree.get(i);
for(int j=0;j<9;j++)
if(nod.sira[j] == j)
ok++;
if(ok > 7){
System.err.println("bulundu-->"+i);
return i;
}
else
ok=0;
}
bas = son+1;
son = k;
}while(depth-- > 0);
return -1;
}
public Vector cozumuAl(int i){
if(i<0) return null;
Node node;
if(i==0) {
path.add((Node)tree.get(0));
return path;
}
while(i>0){
node = (Node)tree.get(i);
path.add(node);
i = node.root;
}
Vector path2=new Vector();
for(int j=0;j<path.size();j++){
path2.add(j,path.get(path.size()-j-1));
}
return path2;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -