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
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()