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 __init__(self,rutaBD): u''' Costructor de la clase. ''' self.__pathBD = rutaBD self.__Busqueda = Busqueda() self.bd = sqlite.sqlite(self.__pathBD)
class Database: ''' Clase manejadora de operaciones con una base de datos/catalogo. ''' def __init__(self,rutaBD): u''' Costructor de la clase. ''' self.__pathBD = rutaBD self.__Busqueda = Busqueda() self.bd = sqlite.sqlite(self.__pathBD) ############### # METODOS BD # ############### def getPathBD(self): u''' Obtiene la ruta de la base de datos en uso. ''' return self.__pathBD def getLenguajes(self): u''' Obtiene los lenguajes para la actual BD. ''' resultado = self.bd.realizarConsulta('SELECT DISTINCT language FROM snippet ORDER BY language') return resultado def getLengAndTitles(self, consulta=None, favorito = None, tagsPresicion = None): u''' Obtiene los snippets por lenguajes de la actual BD. @return: una lista de tuplas con este formato (lenguaje,titulo)''' #por defecto busca los que no son favoritos if not consulta and not favorito: resultado = self.bd.realizarConsulta('''SELECT language,title FROM snippet ORDER BY language,title ''') else: #si no se pasa este parametro if favorito is None: favorito = 0 if tagsPresicion is None: tagsPresicion = False #genera un sql con la busqueda segun la consulta recibida consulta = self.__Busqueda.generarConsulta(consulta, int(favorito), tagsPresicion) #obtiene los resultados de la consulta resultado = self.realizarConsulta(consulta) return resultado def getAllSnippets(self): u''' Obtiene todos los snippets de la base de datos. ''' resultado = self.bd.realizarConsulta('''SELECT title,language,tags,contens, description,creation,reference, modified,uploader,starred FROM snippet ORDER BY language,title''') return resultado def getSnippet(self, lenguaje, titulo): u''' Obtiene un snippet por su lenguaje y titulo correspondiente. ''' resultado = self.bd.getDatosColumnas("snippet",criterios = {'language':lenguaje,'title':titulo}) return self.__convertirASnippet(resultado) def getSnippetsCount(self): u''' Obtiene la cantidad de snippets cargados en la actual bd. ''' cantidad = self.realizarConsulta('SELECT count(*) FROM snippet') return int(cantidad[0][0]) def realizarConsulta(self,consulta): return self.bd.realizarConsulta(consulta) ################################ # METODOS PARA MANEJAR SNIPPET # ################################ def agregarSnippet(self, datosSnippet): u''' Agrega un nuevo Snippet a la base de datos. datosSnippet = diccionario con los datos del snippet a agregar.''' # TODO: agregar los try-catch para contemplar: # º snippet repetido # º error al agregar un snippet #genera los sig de preguntas segun la cantidad de campos recibidos sp = str('('+'?,'*len(datosSnippet))[:-1] + ')' #genera un string con los nombre de los campos campos = '('+','.join(datosSnippet.keys())+')' #se convierten los campos a unicode/utf8 valores = [] for valor in datosSnippet.values(): valores.append(valor)#.encode('ascii','utf-8')) try: return self.bd.realizarAlta("snippet", datosSnippet) , None except Exception, msg: print 'agregarSnippet >> ',str(msg) return False, str(msg)
def __init__(self,rutaBD, database_name): u''' Costructor de la clase. ''' self.__pathBD = rutaBD self.__Busqueda = Busqueda() self.bd = couchdb.Server(rutaBD)[database_name]
class Database: ''' Clase manejadora de operaciones con una base de datos/catalogo. ''' def __init__(self,rutaBD, database_name): u''' Costructor de la clase. ''' self.__pathBD = rutaBD self.__Busqueda = Busqueda() self.bd = couchdb.Server(rutaBD)[database_name] ############### # METODOS BD # ############### def getPathBD(self): u''' Obtiene la ruta de la base de datos en uso. ''' return self.__pathBD def getLenguajes(self): u''' Obtiene los lenguajes para la actual BD. ''' resultado = self.bd.query(""" function (doc) { if (doc.doc_type == 'snippet') { emit(doc.language, null); };}""") return list(tuple([doc['key'] for doc in resultado])) def getLengAndTitles(self, consulta=None, favorito = None, tagsPresicion = None): u''' Obtiene los snippets por lenguajes de la actual BD. @return: lista de tuplas con este formato: (lenguaje,titulo)''' #por defecto busca los que no son favoritoss if not consulta and not favorito: resultado = self.bd.query(''' function (doc) { if (doc.doc_type == 'snippet') { emit([doc.language, doc.title]); };}''') return [doc['key'] for doc in resultado] else: #si no se pasa este parametro if favorito is None: favorito = 0 if tagsPresicion is None: tagsPresicion = False #genera un sql con la busqueda segun la consulta recibida consulta = self.__Busqueda.generarConsulta(consulta, int(favorito), tagsPresicion) #obtiene los resultados de la consulta resultado = self.bd.query(consulta) return [(doc['key'],doc['value']) for doc in resultado] def getAllSnippets(self): u''' Obtiene todos los snippets de la base de datos. ''' orden = ['title','language','tags','code','description','creation','modified','uploader','starred','reference'] resultado = self.bd.query(""" function (doc) { if (doc.doc_type == 'snippet') { emit(doc.title, doc); };}""") self.cant_snippets = len(resultado) return [doc['value'] for doc in resultado] def getSnippet(self, lenguaje, titulo): u''' Obtiene un snippet por su lenguaje y titulo correspondiente. ''' resultado = self.bd.getDatosColumnas("snippet",criterios = {'language':lenguaje,'title':titulo}) return self.__convertirASnippet(resultado) def getSnippetsCount(self): u''' Obtiene la cantidad de snippets cargados en la actual bd. ''' resultado = self.bd.query(''' function (doc) { if (doc.doc_type == 'snippet') { emit(null, doc.title); };}''') return len([doc for doc in resultado]) def realizarConsulta(self,consulta): return [] ################################ # METODOS PARA MANEJAR SNIPPET # ################################ def agregarSnippet(self, datosSnippet): u''' Agrega un nuevo Snippet a la base de datos. datosSnippet = diccionario con los datos del snippet a agregar.''' try: from uuid import uuid4 doc_id = uuid4().hex datosSnippet['doc_type'] = 'snippet' self.bd[doc_id] = datosSnippet return True, '' except Exception, msg: return False, str(msg)
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()
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