Uma lista que contem sub listas, e sub-sublistas pode ser vista
como uma arvore.
A lista [a,[[b, c], d], e] pode ser vista como a árvore
- Escreva o predicado impares de dois argumentos, que é
verdadeiro se o
primeiro argumento é uma lista e o segundo uma lista com apenas os
elementos em posições impares da primeira lista. (o primeiro elemento
da lista esta na posição 1) Modo +,-
Ex: impares([e, 5, t, w, q, 3, 4],X) satisfaz com X = [e, t, q, 4]
Ex: impares([],X) falha
- Escreva o predicado prof_media de tres argumentos, que
dado um atomo como primeiro argumento e uma lista (com sublistas, etc)
como o segundo argumento, é verdadeiro se o terceiro argumento for a
profundidade media do atomo na lista. O predicado deve falhar se o
atomo não pertence a lista. Modo +,+,-
Ex: prof_media(r,[e,[r,[t]],[t,[r]]],X) satisfaz com
X = 2.5
Ex: prof_media(a,[e,[r,[t]],[t,[r]]],X) falha
- Vamos assumir que uma matriz é dada por uma lista de listas, por
linhas. Assim [[1,2,3],[4,5,6]] representa a matriz 2x3
1 2 3
4 5 6
Escreva o predicado get de 4 argumentos, que dado uma matriz
como primeiro argumento, um numero L que
representa a linha, um numero C que representa a coluna, sera verdadeiro
se o quarto argumento for o L,C elemento da matrix. O predicado deve
falhar se não houver o L,C elemento na matriz. Modo +++-
get([[1,2,3],[4,5,6]],1,3,X) satisfaz com X = 3
get([[1,2,3],[4,5,6]],3,2,X) falha
- Escreva o predicado arvore_rev que dado uma arvore como
primeiro argumento, é verdadeiro se o segundo argmento for o reverso
da arvore em todos os niveis. Modo +-
arvore_rev([a, [b, c], [[d, e], f] g],X) satisfaz com
X = [g, [f, [e, d]], [c, b], a]