Created
May 2, 2018 03:03
-
-
Save MarcusAdriano/39dac465031476511ec77636c00dd270 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
%SOMA | |
%O número que somado antessessor da | |
%soma de um com dois que produz como | |
%resultado três. | |
% | |
%sum(s(0),s(s(0)),s(Z)),sum(Z,X,s(s(s(0)))). | |
sum(X,0,X). | |
sum(X, s(Y), s(Z)) :- sum(X, Y, Z). | |
%defina um predicado recursivo para calcular | |
%o produto de dois números natureais usando | |
%apenas soma e subtração | |
produto(X,0,0):- X >= 0,!. | |
produto(X,1,X):- X >= 0,!. | |
produto(X,Y,Z):- X >= 0, | |
Y >= 0, | |
Y1 is Y - 1, | |
produto(X,Y1,Z1), | |
Z is X + Z1,!. | |
% O grafo a seguir representa um mapa, | |
% cujas cidades são representadas | |
%por letras e cujas estradas (de sentido | |
%único) são representados por nú- | |
%meros, que indicam sua extensão em km | |
%Usando o predicado estrada(Origem, | |
%Destino,Km), crie um programa | |
%para representar esse mapa. | |
%Defina a relação transitiva | |
%dist(A,B,D), que determina a distância | |
%D entre duas cidades A e B. | |
estrada(a, b, 25). | |
estrada(a, d, 23). | |
estrada(b, c, 19). | |
estrada(b, e, 32). | |
estrada(c, d, 14). | |
estrada(c, f, 28). | |
estrada(e, f, 26). | |
estrada(d, f, 30). | |
distancia(X,Y,Z) :- estrada(X,Y,Z), !. | |
distancia(X,W,Z) :- estrada(X,Y,Z1), | |
distancia(Y,W,Z2), | |
Z is Z1 + Z2. | |
%listas | |
%concatenar | |
concatena([],X,X). | |
concatena([H|T], L, [H|T1]):-concatena(T,L,T1). | |
%Prefix de uma lista | |
%[1,2,3,4] = [], [1], [1, 2], [1, 2, 3], [1, 2, 3, 4] | |
prefixa(L,X):-concatena(X,_,L). | |
%infixa de uma lista | |
%[1,2,3,4] = [], [4], [3, 4], [2, 3, 4], [1, 2, 3, 4] | |
%Escreva um programa que inverta uma lista de elementos. | |
inverter(L,X) :- inverte(L,[],X). | |
inverte([H|T],A,X) :- inverte(T,[H|A],X). | |
inverte([],A,A). | |
%Escreva um programa denominado limpa (X, L1, L2) que | |
%produz uma lista L2 como sendo a lista L1 sem nenhuma ocorrência do termo X. | |
limpa(_,[],[]). | |
limpa(X,[H|T],L) :- X == H, limpa(X, T, L), !. | |
limpa(X,[H|T],[H1|T1]) :- X =\= H, H1 = H, limpa(X, T, T1), !. | |
%MAIOR ELEMENTO DE UMA LISTA QUALQUER NUMÉRICA | |
maior([],X,X). | |
maior([H|T],A,X) :- A>=H, maior(T,A,X), !. | |
maior([H|T],A,X) :- A<H, maior(T,H,X), !. | |
%Verificar qual "número" é maior | |
maiorQue(s(_), 0). | |
maiorQue(s(X),s(Y)) :- maiorQue(X,Y). | |
%FATORIAL DE UM NÚMERO USANDO RECURSÃO POR CAUDA | |
fatorial(0,1). | |
fatorial(X,Y):-Z is X - 1, fatorial(Z, W), Y is X * W, !. | |
%A palindrome is a word or phrase that | |
%spells the same forwards and backwards. | |
%For example, ‘rotator’, ‘eve’, and ‘nurses | |
% run’ are all palindromes. Write a | |
% predicate palindrome(List) , which | |
% checks whether List is a palindrome. | |
% For example, to the queries | |
palindrome(L):-inverter(L,X),L=X. | |
infixa(A,X):-inverter(A,X1),prefixa(X1,X2),inverter(X2,X). | |
simetrica(L):-inverter(L,X),L=X. | |
d(1,um). | |
d(2,dois). | |
d(3,tres). | |
d(4,quatro). | |
d(5,cinco). | |
d(6,seis). | |
d(7,sete). | |
d(8,oito). | |
d(9,nove). | |
d(0,zero). | |
converte([H|T],[Y|T1]):-d(H,Y),converte(T,T1). | |
converte([],[]). | |
estrada2(1,a,b). | |
estrada2(2,a,d). | |
estrada2(3,b,c). | |
estrada2(4,c,d). | |
estrada2(5,b,e). | |
estrada2(6,c,f). | |
estrada2(7,d,f). | |
estrada2(8,e,f). | |
rota(X,Y,[H]):-estrada2(H,X,Y). | |
rota(X,Y,[H|T]):-estrada2(H,X,W),rota(W,Y,T). | |
progenitor(maria,joao). | |
progenitor(jose,joao). | |
progenitor(maria,ana). | |
progenitor(jose,ana). | |
progenitor(joao,mario). | |
progenitor(ana,helena). | |
progenitor(ana,joana). | |
progenitor(helena,carlos). | |
progenitor(mario,carlos). | |
sexo(ana,feminino). | |
sexo(maria,feminino). | |
sexo(joana,feminino). | |
sexo(helena,feminino). | |
sexo(mario,masculino). | |
sexo(joao,masculino). | |
sexo(jose,masculino). | |
sexo(carlos,masculino). | |
irma(X,Y):- progenitor(A,X),progenitor(A,Y),X\==Y,sexo(X,feminino). | |
irmao(X,Y):- progenitor(A,X), progenitor(A,Y),X\==Y, sexo(X,masculino). | |
descendente(X,Y):- progenitor(X,Y). | |
descendente(X,Y):- progenitor(X,A),descendente(A,Y). | |
avo(X,Y):- progenitor(X,A),progenitor(A,Y),sexo(X,masculino). | |
mae(X,Y):- progenitor(X,Y),sexo(X,feminino). | |
pai(X,Y):- progenitor(X,Y),sexo(X,masculino). | |
tio(X,Y):- irmao(X,A),progenitor(A,Y). | |
primo(X,Y):-irmao(A,B),progenitor(A,X),progenitor(B,Y),X\==Y. | |
primo(X,Y):-irma(A,B),progenitor(A,X),progenitor(B,Y),X\==Y. | |
media(L,X):-media(L,0,0,X). | |
media([H|T],M,N,X):-Y is N + 1,G is M + H, media(T,G,Y,X). | |
media([],M,N,X):-X is M / N. | |
maximo([H|T],X):-maximo(T,H,X). | |
maximo([H|T],A,X):-H >= A,maximo(T,H,X),!. | |
maximo([H|T],A,X):-H < A,maximo(T,A,X),!. | |
maximo([],A,A). |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment