Articles of prólogo

contar o número de chamadas de uma cláusula

Eu tenho uma cláusula como a seguinte: lock_open: – condicional_combinação (X), igual (X, [8,6,5,3,6,9]),! impressão (X). esta cláusula é bem sucedida. Mas eu quero saber quantas vezes condicional_combinação () é chamada antes de equal(X,[8,6,5,3,6,9]) se tornar verdade. O programa é gerar uma permutação seguindo algumas regras. E eu preciso de quantas permutação é preciso gerar […]

Encontre poderes de 2 em uma lista Prolog

Eu estou tentando criar uma lista no Prolog (SWI Prolog) e verificar quais números são potências de 2 e segundo encontrar quantas vezes um número específico está na lista (neste exemplo eu estou tentando encontrar quantas vezes o número 3 está na lista). Por exemplo, se você perguntar ?- check([0,2,3,-5,-2,1,8,7,4], MULT2, THREE). Você deveria ver […]

Prolog: uma pessoa é um irmão de si mesmo?

Estou tendo algum problema para entender por que meu código no prólogo faz alguma coisa com base na ordem em que eu coloco minhas regras. Aqui está meu database: parent(tom, bob). parent(tom, liz). parent(mary, bob). parent(mary, liz). male(tom). male(bob). female(mary). female(liz). E aqui estão as regras: %difference(X, Y) ==> Predicate to check if two people […]

Qual é a lógica ‘não’ no Prolog?

O problema que enfrento é um pouco trivial. Eu quero usar lógica não no Prolog, mas parece que not/1 não é o que eu quero: course(ai). course(pl). course(os). have(X,Y) :- course(X),course(Y),not(X = Y). Eu procuro: have(X,Y), write(XY), nl , fail. E eu não entendo o resultado que quero 🙁

Notação sucessora Prolog produz resultado incompleto e loop infinito

Eu começo a aprender Prolog e primeiro aprendi sobre a notação sucessora. E é aqui que descubro a escrita dos axiomas de Peano no Prolog. Veja a página 12 do PDF : sum(0, M, M). sum(s(N), M, s(K)) :- sum(N,M,K). prod(0,M,0). prod(s(N), M, P) :- prod(N,M,K), sum(K,M,P). Eu coloquei as regras de multiplicação no Prolog. […]

Repetições de contagem de prólogos na lista

Eu estou tentando olhar através de uma lista e contar o número de vezes que uma determinada palavra aparece. Eu tenho isso até agora: count_repetitions([_], [], 0). count_repetitions([Word], [Word|Tail], Count):- count_repetitions([Word], Tail, X), Count is X + 1. count_repetitions([Word], [Z|Tail], Count):- Word \= Z, count_repetitions([Word], Tail, Count). Então a consulta ?- count_repetitions([yes],[yes,and,yes,and,no], X). daria X […]

Acumuladores Prolog. Eles são realmente um conceito “diferente”?

Estou aprendendo Prolog no meu Laboratório de Inteligência Artificial, da fonte Learn Prolog Now! . No Capítulo 5, aprendemos sobre Acumuladores . E como exemplo, esses dois trechos de código são fornecidos. Para encontrar o comprimento de uma lista sem acumuladores : len([],0). len([_|T],N) :- len(T,X), N is X+1. com acumuladores : accLen([_|T],A,L) :- Anew […]

Excluir vogais em uma lista

Escreva um programa que apague as vogais ( String , NoVowelsString ) que exclui todas as vogais de uma determinada string. Até agora eu tenho a vowel(X):- member(X,[a,e,i,o,u]) condição vowel(X):- member(X,[a,e,i,o,u]) . Então pensei no que exclui todos os elementos da outra lista: delete2([],L1,L1). delete2([H|T],L1,L3) :- delete2(H,L1,R2), delete2(T,R2,L3). Então, tendo esses dois eu pensei que […]

Reificação da igualdade / desigualdade de termo

Programas puros de Prolog que distinguem entre a igualdade e a desigualdade de termos de uma maneira limpa sofrem de ineficiências de execução; mesmo quando todos os termos de relevância são fundamentados. Um exemplo recente em SO é essa resposta . Todas as respostas e todas as falhas estão corretas nesta definição. Considerar: ?- Es […]

Qual é a diferença entre ‘e’ no Prolog?

Eu sou novo no Prolog e notei que ‘e’ dão um comportamento diferente, mas estou curioso sobre o porquê. Especificamente, ao carregar um arquivo ?- [‘test1.pl’]. Funciona, enquanto ?- [“test1.pl”]. não.