publicclassAntGame {privateintmaxTime=0,minTime=99999999;
Ant[] ant=newAnt[5];
Ant head=newAnt(0,0);publicvoidinitDate(ints){
ant[0]=newAnt(3,s%2*2-1);
ant[1]=newAnt(7,s/2%2*2-1);
ant[2]=newAnt(11,s/4%2*2-1);
ant[3]=newAnt(17,s/8%2*2-1);
ant[4]=newAnt(23,s/16%2*2-1);
head.setNext(ant[0]);for(inti=0;i<4;i++){
ant[i].setNext(ant[i+1]);
}
ant[4].setNext(null);
}publicvoidfindResult(){
Ant checkAnt;inttime;for(inti=0;i<32;i++){
initDate(i);
display();
time=0;while(head.getNext()!=null){
checkAnt=head.getNext();while(checkAnt!=null){
checkAnt.walk();
checkAnt=checkAnt.getNext();
}
checkAnt=head;while(checkAnt!=null&&checkAnt.getNext()!=null){if(checkAnt.getNext().posion<=0||checkAnt.getNext().posion>=27){
checkAnt.setNext(checkAnt.getNext().getNext());
checkAnt=checkAnt.getNext();
}elseif(checkAnt.getPosion()==checkAnt.getNext().getPosion()){
checkAnt.back();
checkAnt.getNext().back();
checkAnt=checkAnt.getNext().getNext();
}elsecheckAnt=checkAnt.getNext();
}
time++;
}
System.out.println(time);if(time>maxTime)
maxTime=time;elseif(time
minTime=time;
}
System.out.println("minTime:"+minTime+"\tmaxTime:"+maxTime);
}publicvoiddisplay(){
Ant checkAnt=head.getNext();while(checkAnt!=null){
System.out.print(checkAnt.getPosion()+""+checkAnt.getDirection()+"\t");
checkAnt=checkAnt.getNext();
}//System.out.println();}publicstaticvoidmain(String arg[]){
AntGame m=newAntGame();
m.findResult();
}privateclassAnt{privateintposion;privateintdirection;//1、-1分别代表正反方向privateAnt next;privateintstep=1;publicAnt(intposion,intdirection){this.posion=posion;this.direction=direction;
}publicAnt getNext() {returnnext;
}publicvoidsetNext(Ant next) {this.next=next;
}publicintgetPosion() {returnposion;
}publicintgetDirection() {returndirection;
}publicvoidwalk(){
posion+=direction*step;
}publicvoidback(){
direction=(direction+3)%4;
direction--;//运算后1、-1互换}
}
}