]  # 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
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
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!')