Listas-Programación Logica
Laboratorio 2: Listas
1. Según el siguiente código (Prolog), consultar:
-
¿Cuáles son las piezas de una rueda?
¿Cuáles son las piezas de un cuadro?
Indicarel árbol generado por Prolog.
¿Cuáles son las piezas de una bici?
a. La lista construida por piezasde no contiene información de la cantidad de piezas
necesarias, de forma que pueden aparecerpiezas duplicadas en la lista. Hacer una
versión mejorada de este programa para solventar estas deficiencias. Por ejemplo, se
podría diseñar ensamblaje de tal forma que indique los distintoscomponentes
necesarios y sus cantidades, a través de una estructura como
componente(nombre_componente, cantidad_componente). Así podemos expresar
la información de los ensamblajes de la siguiente manera:ensamblaje( bici, unir([componente(rueda, 2), componente(cuadro, 1)]) ).
% Piezas de una bicicleta
piezabasica(llanta).
piezabasica(cuadro_posterior).
piezabasica(piñones).
piezabasica(tuerca).piezabasica(radios).
piezabasica(manillar).
piezabasica(tornillo).
piezabasica(horquilla).
ensamblaje(bici, unir([rueda, rueda, cuadro])).
ensamblaje(rueda, unir([radios, llanta, plato])).ensamblaje(cuadro, unir([cuadro_posterior, cuadro_delantero])).
ensamblaje(cuadro_delantero, unir([horquilla, manillar])).
ensamblaje(plato, unir([piñones, eje])).
ensamblaje(eje, unir([tornillo,tuerca])).
piezasde(X, [X]):- piezabasica(X).
piezasde(X, P):ensamblaje(X, unir(Subpiezas)),
listapiezasde(Subpiezas, P).
listapiezasde([], []).
listapiezasde([P|Resto], Total):piezasde(P, Piezascabeza),listapiezasde(Resto, Piezasresto),
concatenar(Piezascabeza, Piezasresto, Total).
Programación Lógica
Prof. Ing. Arturo Díaz Pulido.
Universidad Nacional de Trujillo
% predicado auxiliarconcatenar/3
concatenar([], R, R).
concatenar([L|RL], R, [L|S]):concatenar(RL, R, S).
2. Implementar los siguientes predicados sobre listas:
2.1.
2.2.
2.3.
2.4.
2.5.
es_lista_vacia(L); L...
Regístrate para leer el documento completo.