Articles of prólogo

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.

Procedimento do mapa Prolog que aplica o predicado aos elementos da lista

Como você escreve um map(List, PredName, Result) procedimentos do Prolog map(List, PredName, Result) que aplica o predicado PredName(Arg, Res) aos elementos de List e retorna o resultado na lista Result ? Por exemplo: test(N,R) :- R is N*N. ?- map([3,5,-2], test, L). L = [9,25,4] ; no

União Prolog para AUBUC

Comecei a aprender Prolog recentemente e não consigo resolver como fazer a união de três listas. Consegui fazer união de 2 listas: %element element(X,[X|_]). element(X,[_|Y]):- element(X,Y). %union union([],M,M). union([X|Y],L,S) :- element(X,L),union(Y,L,S). union([X|Y],L,[X|S]) :- (not(element(X,L))),union(Y,L,S). Alguém pode me ajudar por favor?