Created
September 26, 2013 13:00
-
-
Save tonussi/6713829 to your computer and use it in GitHub Desktop.
listas2.pro
This file contains hidden or 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
/* 15 ===================================== | |
* Predicado: substituidoDoInicio(D, L, LM) | |
* Definição: D é um dado, L é uma lista e LM é a lista L com D no lugar do primeiro dado de L. | |
*/ | |
%passo-basico | |
substituidoDoInicio(D, L, [D | L]). | |
%passo-indutivo | |
substituidoDoInicio(D, [P | R], [P | R2]) :- substituidoDoInicio(D, R, R2). | |
/* 16 ======================================= | |
* Predicado: substituidoDaPos(D, Pos, L, LM) | |
* Definição: D é um dado, Pos é a posição do dado a ser substituído, | |
* L é uma lista e LM é a lista L com D no lugar do dado de L que está na posição Pos. | |
*/ | |
%passo-basico | |
substituidoDaPos(D, 1, L, [D | L]). | |
%passo-indutivo | |
substituidoDaPos(D, Pos, [P | R], [P | R2]) :- Pos > 1, Pos1 is Pos - 1, substituidoDaPos(D, Pos1, R, R2). | |
/* 17 ======================== | |
* Predicado: invertida(L, LM) | |
* Definição: L é uma lista e LM é a lista L com os dados | |
* invertidos (o primeiro dado de L será o último de LM, | |
* o segundo de L será o penúltimo de LM e assim por diante). | |
*/ | |
%passo-basico | |
invertida(L1, L2) :- invertida(L1, L2, []). | |
%passo-indutivo | |
invertida([], L2, L2) :- !. | |
invertida([X|Xs], L2, T) :- !, invertida(Xs, L2, [X|T]). | |
/* 18 ============================= | |
* Predicado: temOcorrencias(D,L,O) | |
* Definição: D é um dado, L é uma lista e O é um número que indica quantas | |
* vezes D aparece na lista L. | |
*/ | |
%passo-basico | |
temOcorrenciasChar([], 0). | |
%passo-indutivo | |
temOcorrenciasChar([P |Cauda], Palavra) :- temOcorrenciasChar(Cauda, Conta), Conta is Conta + 1. | |
temOcorrenciasChar([Cabecalho|Cauda], Palavra):- Cabecalho \= P, temOcorrenciasChar(Cauda, Palavra). | |
%passo-basico | |
temOcorrenciasChar([], 0). | |
%passo-indutivo | |
temOcorrenciasChar(['p' |Cauda], Palavra) :- temOcorrenciasChar(Cauda, PalavraTemp), PalavraTemp is PalavraTemp + 1. | |
temOcorrenciasChar([Cabecalho|Cauda], Palavra):- Cabecalho \= p, temOcorrenciasChar(Cauda, Palavra). | |
/* 19 ============================== | |
* Predicado: semOcorrencias(D,L,LM) | |
* Definição: D é um dado, L é uma lista e LM é a lista L sem a | |
* presença do dado D. A ordem dos dados em LM tem que ser a mesma de L. | |
*/ | |
%passo-basico | |
semOcorrencias(D, [], []) :- !. | |
%passo-indutivo | |
semOcorrencias(D, [D|CaudaTemp], LM) :- !, semOcorrencias(D, CaudaTemp, LM). | |
semOcorrencias(D, [L|CaudaTemp], [L|LM]) :- semOcorrencias(D, CaudaTemp, LM). | |
/* 20 ================================ | |
* Predicado: concatenadas(L1, L2, LC) | |
* Definição: L1 e L2 são listas e LC é a lista contendo todos os dados de L1 | |
* seguidos de todos os dados de L2. | |
*/ | |
%passo-basico | |
concatenadas([], LC, LC). | |
%passo-indutivo | |
concatenadas([Cabecalho|Cauda], LC, [Cabecalho|CaudaTemp]) :- concatenadas(Cauda, LC, CaudaTemp). | |
/* 21 ==================== | |
* Predicado: ehMaior(L, M) | |
* Definição: L é uma lista de números e M é o maior dos números. | |
*/ | |
/* 22 =============================== | |
* Predicado: primeiroEUltimo(L, LPU) | |
* Definição: L é uma lista e LPU é uma lista contendo o primeiro | |
* e o último dados de L. | |
*/ | |
/* 23 ====================== | |
* Predicado: nivelada(L,LN) | |
* Definição: L é uma lista que pode conter outras listas e LN é uma lista | |
* formada pelos dados de L com uma diferença: quando um dado de L for uma lista | |
* então os dados desta lista são incluídos na lista LN. | |
Exemplo: ? nivelada([a,b, [c, d], e], LN). | |
LN = [a, b, c, d, e] | |
*/ | |
/* 24 ======================== | |
* Predicado: invertida2(L,LI) | |
* Definição: L é uma lista e LI é uma lista formada pelos membros de L só | |
* que na ordem inversa. A implementação não deve usar o predicado concatenadas. | |
*/ | |
/* 25 ====================== | |
* Predicado: impares(L, LI) | |
* Definição: L é uma lista e LI é uma lista que contém os dados de L nas posições | |
* ímpares. | |
*/ | |
/* 26 ================================== | |
* Predicado: maioresQue(L1, Limite, L2) | |
* Definição: L1 é uma lista de números, L2 é uma lista que contém dados de L1 | |
* que são maiores que Limite. | |
*/ | |
/* 27 =========================== | |
* Predicado: monteLista(D, C, L) | |
* Definição: L é uma lista formada por C dados iguais a D. | |
*/ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment