Prolog Lista 2
1. Encontrar o último elemento de uma lista.
?- last([1,a,6,c,5],X).
X = 5 yes ?- last([r,2,w,4,t],4). no ?- last([q,2,e,4,5],5). yes 2. Encontrar o k-ésimo elemento de uma lista.
?- kth([1,3,5,7,9],3,X).
X = 5 yes ?- kth([1,3,5,7,9],6,X). no ?- kth([1,3,5,7,9],2,3). yes 3. Contar o número de vezes que um certo elemento aparece em uma dada lista.
?- count([1,3,5,7,3,9],3,X).
X = 2 yes ?- count([a,b,a,a,b,a,a,c,a,b],a,X).
X = 6 yes ?- count([1,3,6,7,9],5,0). yes 4. Remover de um lista todas as ocorrências de um dado valor.
?- remove_value([1,3,5,7,3,9],3,X).
X = [1,5,7,9] yes ?- remove_value([1,a,2,a,4,5,6],a,[1,2,4,5,6]). yes ?- remove_value([a,c,t,g,a,t,g],a,[c,t,g,a,t,g]). no 5. Remover o k-ésimo elemento de …exibir mais conteúdo…
Caso apenas a primeira seqüência seja fornecida, o predicado deve gerar, uma a uma, todas as subseqüências da seqüência (numa ordem qualquer).
?- subseq([a,b,c,d,e,f,g,h],[c,d,e,f]). yes ?- subseq([a,b,c,d,e,f,g,h],[b,d,e,f]). no ?- subseq([a,b,c,d,e],X).
X = [] ;
X = [a] ;
X = [a, b] ;
X = [b] ;
X = [a, b, c] ;
X = [b, c] ;
X = [c] ;
X = [a, b, c, d] ;
X = [b, c, d] ;
X = [c, d] ;
X = [d] ;
X = [a, b, c, d, e] ;
X = [b, c, d, e] ;
X = [c, d, e] ;
X = [d, e] ;
X = [e] ; no 17. Eliminar os elementos iguais consecutivos de uma lista, ou seja, se uma lista possui elementos repetidos em seqüência, eles devem ser substituídos por uma única cópia do elemento. compress([a,a,a,a,b,c,c,a,a,d,e,e,e,e],X). X = [a, b, c, a, d, e] yes compress([a,a,a,a,b,c,c,a,a,d,e,e,e,e],[a,b,c,a,d,e]). yes 18. Agrupar os elementos iguais consecutivos de uma lista em sublistas. Note que a ordem dos elementos deve permanecer inalterada. pack([a,a,a,a,b,c,c,a,a,d,e,e,e,e],X). X = [[a, a, a, a], [b], [c, c], [a, a], [d], [e, e, e, e]] yes pack([a,a,b,c,c,c],X).
X = [[a,a],[b],[c,c,c]]; no 19. Compactar uma lista de modo que elementos iguais consecutivos sejam representados como um único termo [E,N], onde E é o elemento e N é o número de repetições.
?- encode([a,a,a,a,b,c,c,a,a,d,e,e,e,e],X).
X = [[a, 4], [b, 1], [c, 2], [a, 2], [d, 1], [e, 4]] ; no 20. Dada uma seqüência (lista) e um inteiro N, rotacionar a lista N