] # lista de lista de literales que hacen verdadera lista_hojas OK, INTS = T.Tableaux(lista_hojas, letrasProposicionales) print "Tableau terminado!" # Guardo el tiempo al terminar el procedimiento end = timer() print u"El procedimiento demoró: ", end - start if OK == 'Satisfacible': if len(INTS) == 0: print u"Error: la lista de interpretaciones está vacía" else: print "Guardando interpretaciones en archivo..." import csv archivo = 'tableros_automatico.csv' with open(archivo, 'w') as output: writer = csv.writer(output, lineterminator='\n') writer.writerows(INTS) print "Interpretaciones guardadas en " + archivo import visualizacion as V contador = 1 for i in INTS: print "Trabajando con literales: ", i V.dibujar_tablero(i, contador) contador += 1 print "FIN"
# Regla #4: No se puede mover en diagonal y no se puede retroceder formula = [] temporal = [] for i in sol_parcial: temporal.append(t.StringtoTree(fun.listatoNPI(fun.genaux(i), ''), baldosas)) form = temporal[0] for i in range(1, len(temporal)): form = t.Tree('O', form, temporal[i]) formula.append(form) for i in noMuros: if len(sol_parcial) == 1: break formula.append(t.StringtoTree(fun.Regla4[i], baldosas)) print t.imprime_hoja(formula) satis, sol_parcial = t.Tableaux([formula], baldosas) formula = [] temporal = [] for i in sol_parcial: temporal.append( t.StringtoTree(fun.listatoNPI(fun.genaux(i), ''), baldosas)) form = temporal[0] for i in range(1, len(temporal)): form = t.Tree('O', form, temporal[i]) formula.append(form) count = 1 for i in sol_parcial: v.dibujar_tablero(sol_parcial, muros, count) count += 1
def crea_regla1(): # Creamos la regla de que debe haber por lo menos un caballo en cada turno inicial_regla = True for t in range(Nt): inicial_clausula = True for c in range(Nc): if inicial_clausula: clausula = chr(C.codifica(c, t, Nc, Nt) + 256) inicial_clausula = False else: clausula += chr(C.codifica(c, t, Nc, Nt) + 256) + "O" if inicial_regla: regla1 = clausula inicial_regla = False else: regla1 += clausula + "Y" return regla1 Regla1 = crea_regla1() I = T.Tableaux(Regla1) print('Hay', len(I), 'soluciones') if len(I) > 0: print('Nos quedamos con una') I1 = [T.Inorder(x) for x in I[52]] print(I1) V.dibujar_tablero(I1, Nc, Nt)
print(u'Deje vacío si no desea condición inicial.') cInicial = input(u'Condición inicial? (1,...,9):') if len(cInicial) > 0: assert(int(cInicial)>0 and int(cInicial)<10) print(u'Resolviendo el problema con condición inicial', cInicial) cInicial = chr(int(cInicial) + 96) # print(cInicial) else: print(u"El problema se resolverá sin condiciones iniciales.") print("Creando reglas...") reglas = C.crear_reglas() if len(cInicial) > 0: reglas += cInicial + "Y" A = C.String2Tree(reglas) print('Encontrando soluciones (paciencia, por favor!)...') listaSoluciones = C.Encuentra_Interpretaciones(A) print('Hay', str(len(listaSoluciones)), ' interpretaciones que resuelven el problema.') # print('Las interpretaciones son:\n', listaSoluciones) for x in range(len(listaSoluciones)): f = listaSoluciones[x] V.dibujar_tablero(f,x + 1) print('Visualizaciones guardadas en /Soluciones') print('Terminado!')