def __init__(self,*args,**kwargs):
     '''Metodo constructor de la clase laberinto'''
     b=Busqueda()
     self.prueba=2
     if (len(args)==2) and isinstance(args[0],str) and isinstance(args[1],str):
         self.read_json(args[0])
         if(self.comprobar_integridad()):
             print("Ha dado error en el json")
         estado_inicial,estado_objetivo,maze=b.readjson(args[1])
     else:
         self.filas=args[0]
         self.columnas=args[1]
         self.casillas=self.tablero()
         self.to_json(self.casillas)
         estado_inicial=str((0,0))
         estado_objetivo=str((self.filas-1,self.columnas-1))
         maze=None       
     lista_estados=b.generar_estados(self.casillas)
     
     if(self.comprobar_integridad_fichero_nodos(estado_inicial,estado_objetivo,maze)):
         print('Introduzca la estrategia del problema\n')
         print('Las estrategias disponibles son: A, BREADTH, DEPTH, UNIFORM, GREEDY\n')
         estrategia=str(input('>>'))
         estrategia=estrategia.upper()            
         while  (estrategia!='A' and estrategia!='BREADTH' and estrategia!='DEPTH' and estrategia!='UNIFORM' and estrategia!='GREEDY'):
             print('Error introduciendo estrategia\n')
             print('RECUERDE: las estrategias disponibles son: A, BREADTH, DEPTH, UNIFORM, GREEDY\n')
             estrategia=str(input('>>'))
             estrategia=estrategia.upper()                
         estado,frontera,visitados,lista_solucion=self.problema(estado_inicial,estado_objetivo,maze,lista_estados,estrategia)
         self.dibujar(self.casillas,frontera,visitados,lista_solucion,estrategia)
         b.imprimir_solucion(lista_solucion,self.filas,self.columnas,estrategia)
     else:
         print("Finalizando programa....")
    def problema(self,estado_inicial,estado_objetivo,maze,lista_estados,estrategia):
        '''En este metoodo realizamos la resolucion del problema'''
        visitados=[]
        b=Busqueda()
        frontera= []
        funcion_sucesores=[]        
        estado_inicial=b.conversion_estado(estado_inicial,lista_estados)
        estado_objetivo=b.conversion_estado(estado_objetivo,lista_estados)        
        funcion_sucesores.append(estado_inicial)        
        lista_nodos, identificador = b.creacion_nodo(funcion_sucesores, 0, None ,estrategia,estado_objetivo,None)       
        estado=estado_inicial
        frontera=b.reorden_frontera(frontera, lista_nodos,visitados)

        while(b.objetivo(estado_objetivo,estado)!=True):           
            nodo,frontera=self.comprobarfrontera(visitados,frontera)
            visitados.append(nodo)
            estado=b.nodo_a_estado(nodo,lista_estados)
            funcion_sucesores=b.creacion_sucesores(estado,lista_estados)
            lista_nodos, identificador=b.creacion_nodo(funcion_sucesores, identificador,  estado,estrategia,estado_objetivo,nodo)
            frontera=b.reorden_frontera(frontera, lista_nodos,visitados)        
        frontera=self.comprobarfrontera2(visitados,frontera)       
        frontera=self.ultimosvecinos(lista_nodos,frontera)       
        lista_solucion=b.encontrar_solucion(visitados,estado_inicial)             
        return estado ,frontera , visitados,lista_solucion
示例#3
0
from archivo.miarchivo import *  #Importamos las clases que usaremos
from busqueda.Busqueda import *
elementoBuscar = 3  #Establecemos el elemento que vamos a buscar
mtxt = MiArchivo(
    "data/datos.txt")  #Enviamos la dirrección de archivo a la clase
lista = mtxt.obtener_informacion()  #Obtenemos las lineas en una lista
lista = [l.split(",") for l in lista
         ]  #Hacemos un split para separar cada elemento seguido de una ","
lista2 = [
]  #Inicializamos una lista vacia que contendra los elementos ordenados
for d in lista:  #For que recorre las lineas de la lista
    for numero in d:  #For que recorre cada elemento de cada linea
        e = int(numero)  #Transformamos la cadena en entero
        lista2.append(
            e)  #Agregamos a la lista vacia los elementos como enteros
lista2.sort()  #Ordenamos la lista
a = Busqueda(
    lista2
)  #Creamos un objeto y enviamos la lista ordenada a su constructor de clase
b = a.busquedaBinaria(
    3)  #Creamos una variable que recibira el return del metodo busquedaBinaria
if (b == -1
    ):  #En caso de que no se enceuntre retorna -1 y presentamos el mensaje
    print("El número no existe")
else:  #En caso de encontrare presentamos su posición
    print("La posicion es %s" % b)
mtxt.cerrar_archivo()