Material‎ > ‎Guías de ejercicios‎ > ‎

Ferreteros

Los ferreteros de mi barrio

Últimamente tuvimos problemas para conseguir algunos productos que necesitamos para hacer las
reparaciones de nuestros hogares.
Principalmente nos interesan tres tipos de productos
• Los caños, que decidimos representarlos como functores de ariedad 2, de la forma:
canio(ancho,material)
• Los tornillos, que decidimos representarlos como functores de ariedad 2, de la forma:
tornillo(largo,cabeza). Todos los tornillos tienen el mismo materia, aluminio.
• Las canillas, que decidimos representarlas como functores de ariedad 3, de la forma:
canilla(color,forma,material)

A su vez, lo que mas nos importa es saber que local vende cada uno de los productos, por lo cual un
fragmento de nuestra base de conocimientos es esta:

% canio/2: canio(ancho,material)
vende(pepe,canio(15,pvc)).
vende(pepe,canio(3,hierro)).
vende(luz,canio(7,pvc)).

% todos los tornillos son de aluminio
% tornillo/2: tornillo(largo,cabeza)
vende(pepe,tornillo(8,normal)).
vende(pepe,tornillo(6,philips)).
vende(roque,tornillo(5,normal)).

% canilla(color,forma,material)
vende(pepe,canilla(blanco,triangular,hierro)).
vende(roque,canilla(negro,curva,aluminio)).


Tambien sabemos que hay locales que son amigos, por ejemplo:
amigos(pepe,roque).

Se pide:
  1. Escribir las consultas que representen las siguientes preguntas SIN agregar nada al programa
    1. ¿qué vende roque?
    2. ¿qué caños vende luz?
    3. ¿qué tornillos vende roque?
    4. ¿Todos los amigos de pepe venden tornillos? (no me importa ni el largo ni la cabeza, ni si vende otro material, solo con que vendan algun tornillo me alcanza)
  2. tieneMaterial/2: que me dice si un local tiene un material.  Por ejemplo: tieneMaterial(pepe,aluminio). Deberia decirme que si porque pepe vende tornillos y todos los tornillos estan hechos de aluminio.
  3. todosTienenMaterial/1 se verifica si todos los locales tienen un material.  Por ejemplo: todosTienenMaterial(hierro). Me dice que no porque ni roque ni luz tienen nada de ese material.  No necesariamente tiene que ser inversible.
  4. mandoAComprar/3 que relaciona a dos locales y un producto si el primer local no vende ese producto y el segundo local (que si lo vende) es amigo del primero.
  5. tieneElLargoProximo/2, que se cumple si un local tiene el largo proximo a un tornillo que yo ya compre, esto pasa si tiene un tornillo con la misma cabeza y un largo que es el doble.  Por ejemplo: tieneElLargoProximo(roque,tornillo(4,normal)). Esto me dice que no porque roque no vende tornillos de 8 con cabeza normal, pero si la consulta es: tieneElLargoProximo(pepe,tornillo(4,normal)). La respuesta es si.
Comments