es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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).
Tags:  ,

Answer

  1. Avatar for 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 predicado intel/1 para incluir todos los procesadores Intel. Luego, puedes usar el predicado setof/3 para encontrar todas las fechas de lanzamiento para cada miembro del predicado intel/1 y almacenarlas en una lista.

    Aquí tienes un ejemplo de consulta:

    intel([i4004,i8080,i8086,pentium]).
    
    get_release_dates(IntelProcDates) :-
        setof(Date, Proc^Intel^(prozessor(Proc), released(Proc, Date), member(Proc, Intel), Intel = [Proc|_]), IntelProcDates).
    

    En esta consulta, utilizamos el predicado setof/3 para obtener una lista única de todas las fechas de lanzamiento para cada procesador en el predicado intel/1. El símbolo ^ se utiliza para indicar que no nos importa los valores de Proc e Intel. Utilizamos el predicado member/2 para asegurarnos de incluir solo los procesadores que son miembros del predicado intel/1.

    Cuando consultamos get_release_dates(IntelProcDates)., obtenemos el resultado:

    IntelProcDates = [1971, 1974, 1976, 1993]
    

    que es la lista de todas las fechas de lanzamiento de los procesadores Intel.

Comments are closed.