class Trabalho_Sistema_Expecialista():
    def __init__(self):
        self.prolog = Prolog()
        self.X = Variable()
        self.resultado = [
            'corinthians', 'atletico_mg', 'gremio', 'santos', 'sao_paulo',
            'palmeiras', 'flamengo', 'internacional', 'ponte_preta', 'sport',
            'fluminense', 'atletico_pr', 'cruzeiro', 'chapecoense',
            'figueirense', 'avai', 'coritiba', 'goias', 'vasco', 'joinville',
            'botafogo'
        ]

        arquivo_pl = open('jogos.pl')
        for linha in arquivo_pl.readlines():
            if linha[len(linha) - 1] == '\n':
                linha = linha.replace("\n", "")
            self.prolog.assertz(linha)

    def Imprimir_Resultados(self):
        os.system('clear')
        if len(self.resultado) == 1:
            print("O esporte que você está pensando é :\n")
            for resultado in self.resultado:
                print(resultado, '\n')
            sys.exit(0)
        # else:
        #     print('''
        #         Não consegui achar o esporte mas acho
        #         que ele está nessa lista. Não está?
        #         ''')
        #     for resultado in self.resultado:
        #         print(resultado)

    def Imprimir(self, lista):
        for esporte in lista:
            print(esporte)

    def Tamanho(self):
        print(len(self.resultado))

    def Query(self, parametro):
        lista = []
        parametro = Functor(parametro)
        query = Query(parametro(self.X))
        while query.nextSolution():
            lista.append(str(self.X.get_value()))
        query.closeQuery()

        return lista

    def Intersection(self, lista1):
        if set(lista1).intersection(self.resultado) == set():
            self.resultado = lista1
        else:
            self.resultado = set(lista1).intersection(self.resultado)

    def Difference(self, lista1):
        Times = set(self.resultado)
        if Times.difference(lista1) == set():
            self.resultado = lista1
        else:
            self.resultado = Times.difference(lista1)

    def Pergunta(self, pergunta, caracteristica):
        resp = input(pergunta + '\n')
        Times = self.Query(caracteristica)
        if (resp == 's' or resp == 'S'):
            self.Intersection(Times)
            return True
        else:
            self.Difference(Times)
            return False
class Trabalho_Sistema_Expecialista():

    def __init__(self):
        self.prolog = Prolog()
        self.X = Variable()
        self.resultado = ['corinthians', 'atletico_mg', 'gremio', 'santos', 'sao_paulo', 'palmeiras', 'flamengo', 'internacional', 'ponte_preta', 'sport', 'fluminense', 'atletico_pr', 'cruzeiro', 'chapecoense', 'figueirense', 'avai', 'coritiba', 'goias', 'vasco', 'joinville', 'botafogo']

        arquivo_pl = open('jogos.pl')
        for linha in arquivo_pl.readlines():
            if linha[len(linha) - 1] == '\n':
                linha = linha.replace("\n", "")
            self.prolog.assertz(linha)

    def Imprimir_Resultados(self):
        os.system('clear')
        if len(self.resultado) == 1:
            print("O esporte que você está pensando é :\n")
            for resultado in self.resultado:
                print(resultado, '\n')
            sys.exit(0)
        # else:
        #     print('''
        #         Não consegui achar o esporte mas acho 
        #         que ele está nessa lista. Não está?
        #         ''')
        #     for resultado in self.resultado:
        #         print(resultado)

    def Imprimir(self, lista):
        for esporte in lista:
            print(esporte)

    def Tamanho(self):
        print(len(self.resultado))

    def Query(self, parametro):
        lista = []
        parametro = Functor(parametro)
        query = Query(parametro(self.X))
        while query.nextSolution():
            lista.append(str(self.X.get_value()))
        query.closeQuery()

        return lista

    def Intersection(self, lista1):
        if set(lista1).intersection(self.resultado) == set():
            self.resultado = lista1
        else:
            self.resultado = set(lista1).intersection(self.resultado)
                
    def Difference(self, lista1):
        Times = set(self.resultado)
        if Times.difference(lista1) == set():
            self.resultado = lista1
        else:
            self.resultado = Times.difference(lista1)

    def Pergunta(self, pergunta, caracteristica):
        resp = input(pergunta + '\n')
        Times = self.Query(caracteristica)
        if (resp == 's' or resp == 'S'):
            self.Intersection(Times)
            return True
        else:
            self.Difference(Times)
            return False
コード例 #3
0
prolog = Prolog()

#prolog.consult("e:/ia/testeXadrezBFa.pl")
prolog.consult("f:/temp/pee1.pl")
#prolog.assertz("posicao(2,3)")

for result in prolog.query("mover( 3/4, X/Y, C )"):
    print result['X'], result['Y'], result['C']


for result in prolog.query("aStar( 6/6, V, C)",maxresult=1):
    for estado in result['V']:
        print estado.args

V = Variable()
C = Variable()
E = Variable()
aStar = Functor("aStar", 3)
posicao = Functor("posicao",2)
q = Query(posicao( V, C) )
pos= '3/7'
#q = Query(aStar(pos, V, C) )
while q.nextSolution():
    vec = V.get_value()
    cust = C.get_value()
    print "aa"

q.closeQuery()

print "*** FIM ***"