Skip to content

Instantly share code, notes, and snippets.

@tonussi
Created September 26, 2013 13:00
Show Gist options
  • Save tonussi/6713829 to your computer and use it in GitHub Desktop.
Save tonussi/6713829 to your computer and use it in GitHub Desktop.
listas2.pro
/* 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