Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*NOTA: NUNCA DEIXAR COMENTÁRIO "GRUDADO NA HORIZOTAL" EM CÓDIGO*/
- % "codigo./*comentario*/" deu problema
- progenitor(hugo,hudson).
- progenitor(diva,hudson).
- progenitor(hugo,irmo).
- progenitor(diva,irmo).
- progenitor(hugo,irma).
- progenitor(diva,irma).
- progenitor(vop,hugo).
- progenitor(vohp,hugo).
- progenitor(vom,diva).
- progenitor(vohm,diva).
- progenitor(vop,tio).
- progenitor(vohp,tio).
- progenitor(vop,tia).
- progenitor(vohp,tia).
- homem(hugo).
- homem(hudson).
- homem(irmo).
- homem(vop).
- homem(vom).
- homem(tio).
- mulher(diva).
- mulher(irma).
- mulher(vohp).
- mulher(vohm).
- mulher(tia).
- pai(X,Y) :- progenitor(X,Y), homem(X).
- mae(X,Y) :- progenitor(X,Y), mulher(X).
- filho(X,Y) :- progenitor(Y,X), homem(X).
- filha(X,Y) :- progenitor(Y,X), mulher(X).
- irmao(X,Y) :- progenitor(A,Y), progenitor(A,X), homem(X), X \== Y.
- irma(X,Y) :- progenitor(A,Y), progenitor(A,X), mulher(X), X \== Y.
- avo(X,Y) :- progenitor(X,A), progenitor(A,Y), homem(X).
- avoh(X,Y) :- progenitor(X,A), progenitor(A,Y), mulher(X).
- descendente(X,Y) :- progenitor(Y,X).
- descendente(X,Y) :- progenitor(Y,F), progenitor(F,X).
- soma(X,X,X).
- soma(X,Y,S) :-
- X < Y,
- ProximoX is X+1,
- soma(ProximoX, Y, PS),
- S is PS+X.
- soma(X,Y,S) :- soma(Y,X,S).
- /*fatorial*/
- fatorial(0,1).
- fatorial(N,R) :-
- N > 0,
- N1 is N-1,
- fatorial(N1,R1),
- R is N*R1.
- /*grafos*/
- /*achando rotas*/
- ligado(a,b,5).
- ligado(b,c,10).
- rota(X,Y,C) :- ligado(X,Y,C).
- rota(X,Y,C) :-
- ligado(X,Z,C1),
- rota(Z,Y,C2),
- C is (C1 + C2).
- /*listas*/
- max([X],X).
- max([X,Y|Cauda],Max) :- X >= Y, !, max([X|Cauda],Max).
- max([_,Y|Cauda],Max) :- max([Y|Cauda],Max). /*para o caso de X<Y*/
- /*ou
- max([X],X).
- max([X,Y|Cauda],Max) :- max(Cauda,G), X >= G, Max is X.
- max([X,Y|Cauda],Max) :- max(Cauda,G), X < G, Max is G.
- */
- /*retirar uma ocorrencia de um elemento de uma lista*/
- retirar_elem(E,[E|L],L).
- retirar_elem(E,[E1|L],[E1|L1]) :- retirar_elem(E,L,L1).
- %retirar todas as ocorrencias de um elemento de uma lista
- %warning singleton variables: [Elem] ocorre quando a variável "Elem" é "inútil" (poderia ser substituida por "_")
- retirar_todas(_,[],[]).
- retirar_todas(Elem,[Elem|Cauda],L) :-
- retirar_todas(Elem,Cauda,L).
- /*EXERCÍCIOS*/
- %2
- separa([],[],[]).
- separa([X|Cauda],[X|P],N) :- X >= 0, separa(Cauda,P,N).
- separa([X|Cauda],P,[X|N]) :- X < 0, separa(Cauda,P,N).
- %3
- segundo([_, X|_], X).
- %4
- % iguais(X, X). %já funciona, mas para treinar a lógica é melhor a forma que foi feita.
- iguais([], []).
- iguais([X|Cauda1],[X|Cauda2]) :- iguais(Cauda1, Cauda2).
- %5
- duplica([],[]).
- duplica([X|Cauda], [X,X|Y]) :- duplica(Cauda, Y).
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement