Laberinto1 0

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 5

UNIVERSIDAD AUTÓNOMA “GABRIEL RENÉ MORENO”

FACULTAD DE INGENIERIA Y CIENCIAS DE LA COMPUTACION Y


TELECOMUNICACIONES
INTELIGENCIA ARTIFICIAL
SA

LAB-1. EL PROBLEMA DEL LABERINTO BÁSICO..

Grupo # 15
PORCENTAJE TERMINADO: 100%.
Integrantes DT HG HI EVAL
Maldonado Cutile Christian 0 0 0 0
Pecho Garnica Limberg 1 1 1 100
Soldado Capuma Brandon 1 1 1 100
Velarde Medrano Clever 0 0 0 0

Fecha de Presentacion:01/10/24
Fecha Presentada: 01/10/24

Dias de Retraso: 0

SANTA CRUZ – BOLIVIA


CODIGO FUENTE:
/*
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-
default.txt to change this license
*/

package com.mycompany.laberinto0;

/**
*
* @author Brandon Soldado
*/
public class Laberinto0 {
// Ojo anotarse al portafoli esta tarea!!!
public static void main(String[] args) {
int a = 3;
int b = 3;
int[][] m = new int[a][b];
laberinto(m,0,0,a-1,b-1,1);
laberintoB(m,0,0,a-1,b-1,1);
laberintoC(m,0,0,a-1,b-1,1);
laberintoC1(m,0,0,a-1,b-1,1);
laberintoC2(m,0,0,a-1,b-1,1);
laberintoC3(m,0,0,a-1,b-1,1);
}
public static boolean esValido(int m[][],int i,int j){
return i>=0 && i<m.length && j>=0 && j<m[i].length && m[i][j]==0;
}
public static void mostrar(int m[][]){
for (int i = 0; i < m.length; i++) {
for (int j = 0; j < m[i].length; j++) {
System.out.print(m[i][j] + " ");
}
System.out.println();
}
System.out.println();
}
public static boolean todasVisitadas(int m[][]) {
for (int[] fila : m) {
for (int celda : fila) {
if (celda == 0) return false; // Si hay alguna celda sin visitar
}
}
return true;
}
// Ejercicio#1:a)Algoritmo para mostrar todos los caminos posibles
desde una posición inicial a una posición final. Además, mostrar la
cantidad de soluciones posibles (Cantidad de caminos posibles de la
posición inicial a la posición final).
public static void laberinto(int m[][],int i,int j,int ifin,int jfin,int paso){
if(!esValido(m,i,j)) return;
m[i][j] = paso;
if(i==ifin && j==jfin) mostrar(m);
laberinto(m,i,j-1,ifin,jfin,paso+1);
laberinto(m,i-1,j,ifin,jfin,paso+1);
laberinto(m,i,j+1,ifin,jfin,paso+1);
laberinto(m,i+1,j,ifin,jfin,paso+1);
m[i][j] = 0;
}

// Ejercicio#2: b)Algoritmo para mostrar todos los caminos posibles


desde una posición inicial a una posición final tal que se visiten todas
las casillas de la matriz. Además, mostrar la cantidad de soluciones
posibles.
public static void laberintoB(int m[][],int i,int j,int ifin,int jfin,int paso){
if(!esValido(m,i,j)) return;
m[i][j] = paso;
if(i==ifin && j==jfin && todasVisitadas(m)) mostrar(m);
laberintoB(m,i,j-1,ifin,jfin,paso+1);
laberintoB(m,i-1,j,ifin,jfin,paso+1);
laberintoB(m,i,j+1,ifin,jfin,paso+1);
laberintoB(m,i+1,j,ifin,jfin,paso+1);
m[i][j] = 0;
}

// Ejercicio#3: c)Algoritmo para mostrar todos los caminos posibles


desde una posición inicial a una posición final tal que NO se visiten
todas las casillas de la matriz. Además, mostrar la cantidad de
soluciones posibles.
public static void laberintoC(int m[][],int i,int j,int ifin,int jfin,int paso){
if(!esValido(m,i,j)) return;
m[i][j] = paso;
if(i==ifin && j==jfin && !todasVisitadas(m)) mostrar(m);
laberintoC(m,i,j-1,ifin,jfin,paso+1);
laberintoC(m,i-1,j,ifin,jfin,paso+1);
laberintoC(m,i,j+1,ifin,jfin,paso+1);
laberintoC(m,i+1,j,ifin,jfin,paso+1);
m[i][j] = 0;
}

// Ejercicio#4: d)Resolver los problemas a), b) y c), haciendo que en


el Laberinto se pueda avanzar también por las diagonales.
public static void laberintoC1(int m[][],int i,int j,int ifin,int jfin,int paso){
if(!esValido(m,i,j)) return;
m[i][j] = paso;
if(i==ifin && j==jfin) mostrar(m);
laberintoC1(m,i,j-1,ifin,jfin,paso+1);
laberintoC1(m,i-1,j,ifin,jfin,paso+1);
laberintoC1(m,i,j+1,ifin,jfin,paso+1);
laberintoC1(m,i+1,j,ifin,jfin,paso+1);
laberintoC1(m, i - 1, j - 1, ifin, jfin, paso + 1); // Arriba-Izquierda
laberintoC1(m, i - 1, j + 1, ifin, jfin, paso + 1); // Arriba-Derecha
laberintoC1(m, i + 1, j - 1, ifin, jfin, paso + 1); // Abajo-Izquierda
laberintoC1(m, i + 1, j + 1, ifin, jfin, paso + 1); // Abajo-Derecha
m[i][j] = 0;
}
public static void laberintoC2(int m[][],int i,int j,int ifin,int jfin,int paso){
if(!esValido(m,i,j)) return;
m[i][j] = paso;
if(i==ifin && j==jfin && todasVisitadas(m)) mostrar(m);
laberintoC2(m,i,j-1,ifin,jfin,paso+1);
laberintoC2(m,i-1,j,ifin,jfin,paso+1);
laberintoC2(m,i,j+1,ifin,jfin,paso+1);
laberintoC2(m,i+1,j,ifin,jfin,paso+1);
laberintoC2(m, i - 1, j - 1, ifin, jfin, paso + 1); // Arriba-Izquierda
laberintoC2(m, i - 1, j + 1, ifin, jfin, paso + 1); // Arriba-Derecha
laberintoC2(m, i + 1, j - 1, ifin, jfin, paso + 1); // Abajo-Izquierda
laberintoC2(m, i + 1, j + 1, ifin, jfin, paso + 1); // Abajo-Derecha
m[i][j] = 0;
}
public static void laberintoC3(int m[][],int i,int j,int ifin,int jfin,int paso){
if(!esValido(m,i,j)) return;
m[i][j] = paso;
if(i==ifin && j==jfin && !todasVisitadas(m)) mostrar(m);
laberintoC3(m,i,j-1,ifin,jfin,paso+1);
laberintoC3(m,i-1,j,ifin,jfin,paso+1);
laberintoC3(m,i,j+1,ifin,jfin,paso+1);
laberintoC3(m,i+1,j,ifin,jfin,paso+1);
laberintoC3(m, i - 1, j - 1, ifin, jfin, paso + 1); // Arriba-Izquierda
laberintoC3(m, i - 1, j + 1, ifin, jfin, paso + 1); // Arriba-Derecha
laberintoC3(m, i + 1, j - 1, ifin, jfin, paso + 1); // Abajo-Izquierda
laberintoC3(m, i + 1, j + 1, ifin, jfin, paso + 1); // Abajo-Derecha
m[i][j] = 0;
}

También podría gustarte