You are on page 1of 3

Lista de exercícios: Listas

Prof. Luiz Fernando Afra Brito

1 Exercícios

Exercício 1. Como o Prolog responde as seguintes consulta?

1. [a, b, c, d] = [a, [b, c, d]].

2. [a, b, c, d] = [a| [b, c, d]].

3. [a, b, c, d] = [a, b, [c, d]].

4. [a, b, c, d] = [a, b| [c, d]].

5. [a, b, c, d] = [a, b, c, [d]].

6. [a, b, c, d] = [a, b, c| [d]].

7. [a, b, c, d] = [a, b, c, d, []] .

8. [a, b, c, d] = [a, b, c, d| []] .

9. [] = _.

10. [] = [_].

11. [] = [_| []] .

Exercício 2. Considere a seguinte base de conhecimentos:

1
trad(un, um).
trad(deux , dois).
trad(trois , tres).
trad(quatre , quatro).
trad(cinq , cinco).
trad(six , seis).
trad(sept , sete).
trad(huit , oito).
trad(neuf , nove).
Escreva o predicado lista_trad(F, P) que traduz uma lista de números em francês para
português. Exemplo:
?- lista_trad([un, neuf , deux ], X)
X = [um, dois , tres ]

?- lista_trad(X, [um, sete , seis , dois ])


X = [un, sept , six , deux ]

Exercício 3. Escreva um predicado duas_vezes(Entrada, Saida), sendo que Entrada é uma


lista, e Saida é uma lista com os elementos de Entrada repetidos duas vezes. Exemplo:
?- duas_vezes([a, 4, buggle ], X).
X = [a, a, 4, 4, buggle , buggle ]

?- duas_vezes([1, 2, 1, 1] , X).
X = [1 , 1, 2, 2, 1, 1, 1, 1]

Exercício 4. Desenhe a árvore de prova das seguintes consultas:

1. ?- membro(a, [c, b, a, y]).

2. ?- membro(x, [a, b, c]).

3. ?- membro(X, [a, b, c]).

Exercício 5. Escreva o predicado combina1/3 que recebe três listas como argumento e
combina os elementos das duas primeiras, de maneira entrelaçada, na terceira. Exemplo:

2
?- combina1([a, b, c], [1 , 2, 3] , X).
X = [a, 1, b, 2, c, 3]

?- combina1([ foo , bar , yip , yup ], [ glub , glab , glib , glob ], Res).
Res = [ foo , glub , bar , glab , yip , glib , yup , glob ]

Exercício 5. Escreva o predicado combina2/3 que recebe três listas como argumento e
combina os elementos das duas primeiras, de maneira entrelaçada, na terceira da seguinte
forma:
?- combina1([a, b, c], [1 , 2, 3] , X).
X = [[ a, 1], [b, 2] , [c, 3]]

?- combina1([ foo , bar , yip , yup ], [ glub , glab , glib , glob ], Res).
Res = [[ foo , glub ], [ bar , glab ], [ yip , glib ], [ yup , glob ]]

Exercício 5. Escreva o predicado combina3/3 que recebe três listas como argumento e
combina os elementos das duas primeiras, de maneira entrelaçada, na terceira da seguinte
forma:
?- combina1([a, b, c], [1 , 2, 3] , X).
X = [ junta(a, 1), junta(b, 2), junta(c, 3)]

?- combina1([ foo , bar , yip , yup ], [ glub , glab , glib , glob ], Res).
Res = [ junta(foo , glub), junta(bar , glab), junta(yip , glib),
junta(yup , glob)]

Exercício 6. Escreva o predicado subconjunto/2 que recebe duas listas (de constantes) como
argumento e verifica se a primeira lista é subconjunto da segunda.

Exercício 7. Escreva o predicado superconjunto/2 que recebe duas listas (de constantes)
como argumento e verifica se a primeira lista é superconjunto da segunda.

2 Adicional
• continue usando trace para entender os programas

You might also like