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 uma lista.
?- remove_kth([1,3,5,7,9],3,X).
X = [1,3,7,9] ; no ?- remove_kth([1,3,5,7,9],6,X). no ?- remove_kth([1,3,5,7,9],2,[1,5,7,9]). yes 6. Reverter uma lista.
?- reverse([1,3,5,7,9],X).
X = [9,7,5,3,1] yes ?- reverse(X,[a,b,c,d]).
X = [d,c,b,a] yes ?- reverse([1,3,5,7,9],[9,7,5,3,1]). yes 7. Dividir uma lista em duas partes, de modo que a primeira parte receba os N primeiros elementos e a segunda metade receba os elementos restantes.
?- split([1,3,5,7,9],3,L1,L2).
L1 = [1,3,5]
L2 = [7,9] ; no ?- split([1,3,5,7,9],7,L1,L2).
L1 = [1,3,5,7,9]
L2 = [] yes ?- split([1,3,5,7,9],0,L1,L2).
L1 = []
L2 = [1,3,5,7,9] yes ?- split([1,3,5,7,9],3,[1,3,5],[7,9]). yes 8. Encontrar o menor elemento de uma lista.
?- min([3,5,1,7,9],X).
X = 1 yes ?- min([3,5,1,7,9],3). no ?- min([3,5,1,7,9],1). yes 9. Determinar a união de duas listas instanciadas representando conjuntos (listas sem repetições de elementos). O resultado da união será um conjunto, logo também não terá elementos repetidos.
?- union([1,2,a,5,c],[3,4,5],X).
X = [1,2,a,c,3,4,5] yes ?- union([1,2,3,4,5,6],[4,5,6,7,8],X).
X = [1,2,3,4,5,6,7,8] yes 10. Determinar a intersecção de duas listas instanciadas representando conjuntos (listas sem repetições de elementos). O resultado da