La programación Java es algo normal y corriente.
¿Importar? Java .awt.point;
¿Importar? Java . util .aleatorio;
¿Importar? Java . util . escáner;
¿Público? ¿clase? ¿La hormiga? {
carácter[][]? entorno
int? ancho = 20;
int? altura = 10;
¿Aleatorio? Corrió=¿nuevo? aleatorio();;
int? hormigas = corrió . nextint(30)+40;
int? caramelo = corrió . nextint(30)+55;
int? nivel = 1;
¿Escáner? sc=nuevo? Escáner(sistema . in);
TheAnt(){
env=new? char[alto][ancho];
for(int?i = 0;i<ant;i++){
punto? po = getPoint();
if(env[po.y][po.x]!=0){
I-;
Continuar;
}
env[po . y][po . I = 0;i<Candy;i++){
¿Punto? po = getPoint();
if(env[po.y][po.x]!=0){
I-;
Continuar;
}
env[po . y][po x]= ' $ '; println("Distribución aleatoria:");
showMap();
¿Cadena? isnext =
while(true){
System.out.println("Ingrese 1 para mostrar la siguiente ronda de resultados, otros para salir");
es siguiente = sc . siguiente();
if(isnext.trim().equals(" 1 "){
handle();
nivel++;
mostrarMapa();
}de lo contrario{
romper;
}
} p>
System.out.println("Resultado final:");
showMap();
}
Punto getPoint(){
Punto? resultado = nuevo? Punto(ran.nextInt(ancho), ran.nextInt(alto));
retorno?
}
¿No es válido? handle(){
char[][]? char[alto][ancho];
for(int?I = 0; & ltheeight;i++ ){
for(int? j = 0;j & ltwidth;j++){
//Procesa cada cuadrícula
handleCell(tem,j, I);
}
}
//tem es el resultado del procesamiento.
this.env = tem
}
¿No es válido? handleCell(char[][]tem,int?w,int?h){
int? sx = w & lt=0?0:w-1;
int? sy = h & lt=0?0:h-1;
int? ex=w<ancho-1? w+1:ancho-1;
int? ey=h&laltura-1? h+1:Altura-1;
¿Dejar un mensaje? resultado=nuevo? message();
resultado . settype(env[h][w]);
//Estadísticas sobre el tipo de esta grilla y las condiciones circundantes.
for(int?a = sxa & lt= exa++){
for(int?b = syb & lt= eyb++){
if(a = = w &&B==h){//Esta casilla no cuenta.
Continuar;
}
if(env[b][a]=='#'){
resultado . (resultado . getantnum()+1);
}¿Algo más? if(env[b][a]=='$'){
resultado . setcannum(resultado . getcannum()+1); >}
}
if(result.getType()==0){
if(resultado . getcannum()>0){< / p>
tem[h][w]= ' $ ';
}
}¿Algo más? if(result.getType()=='#'){
if(resultado. getantnum()>=3?||?result.getCanNum()==0){
tem[h][w]= 0;
}
}¿Otro? if(result.getType()=='$'){
if(resultado. getantnum()> 0){
tem[h][w]= ' # ';
}
}
}
¿Público? ¿Electricidad estática? ¿Vacío? main(String[]?args){
¿Nuevo? TheAnt();
}
¿Público? ¿Vacío? mostrarMapa(){
System.
out.println ("\ n = = = = primera homotopía "+nivel+" = = = = = = \ n ");
for(int?I = 0; i< altura; i++){
for(int? j = 0; j & lt ancho; j++){
if(env[i][j]==0){
System.out.print("?);
} En caso contrario{
System.out.print("?+env[i][j]+ "?); p>
}
}
sistema . println(" \ n ");
}
}
}
Mensaje{
¿Privado? char?
¿Privado?
¿Privado?
¿Público? mensaje(){}
¿Público?
this.antNum = num
this.type = pc
} p>
público? getType()? {
Regresar? Tipo;
}
¿No es válido? p>
¿Este tipo? p>
}
¿Público? getAntNum()? {
¿Regresar?
¿Público? ?antNum)? {
Este.antNum
público? getCanNum()? /p>
¿Regresar? p>¿No válido? {
This.CanNum?canNum
}
}
De hecho, no es difícil. procesamiento, simplemente cuente la situación alrededor de cada cuadrícula y luego use la cuadrícula en sí. ¿Qué es? Y las reglas condicionales para determinar cómo debería verse la siguiente cuadrícula.
Espero adoptar O (∩_∩) O~