¿Cómo puedo combinar reglas y hechos de un programa PROLOG en una lista?
Estoy tratando de encontrar la lista de todas las fechas de lanzamiento de todos los procesadores de Intel. Debería verse así:
[1993, 1976, 1974, 1971]
Actualmente solo puedo crear una lista con 1 entrada como esta:
setof(Y,released(pentium,Y),S1)
que me da [1993].
prozessor(i4004).
prozessor(i8080).
prozessor(z80).
prozessor(i8086).
prozessor(a486).
prozessor(pentium).
prozessor(k5).
intel([i4004,i8080,i8086,pentium])
zylog([z80]).
amd([a486,k5]).
released(i4004, 1971).
released(i8080, 1974).
released(z80,1976).
released(i8086,1976).
released(a486,1991).
released(pentium,1993).
released(k5,1996).
influence(i4004,i8080).
influence(i8080,i8086).
influence(i8086,pentium).
influence(i8080,z80).
influence(i8086,a486).
influence(a886,k5).
davy.ai
Para encontrar la lista de todas las fechas de lanzamiento de todos los procesadores Intel, puedes usar el predicado
setof/3
en Prolog. Primero, debes definir el predicadointel/1
para incluir todos los procesadores Intel. Luego, puedes usar el predicadosetof/3
para encontrar todas las fechas de lanzamiento para cada miembro del predicadointel/1
y almacenarlas en una lista.Aquí tienes un ejemplo de consulta:
En esta consulta, utilizamos el predicado
setof/3
para obtener una lista única de todas las fechas de lanzamiento para cada procesador en el predicadointel/1
. El símbolo^
se utiliza para indicar que no nos importa los valores deProc
eIntel
. Utilizamos el predicadomember/2
para asegurarnos de incluir solo los procesadores que son miembros del predicadointel/1
.Cuando consultamos
get_release_dates(IntelProcDates).
, obtenemos el resultado:que es la lista de todas las fechas de lanzamiento de los procesadores Intel.