Prólogo de ordenación simple
Frecuentes
Visto 155 veces
0
En Prolog, lo que tengo ahora es,
:-dynamic listofPeople/2.
listofPeople(Mark,Name).
que básicamente contiene la nota de cada alumno.
Quiero imprimir las mejores 3 marcas.
Para hacer eso, creo que tengo que hacer la clasificación. Si ordeno, perderé el orden del nombre del alumno.
Como puede entender por defecto, lo que quiero es ordenar solo las marcas y ordenar los nombres de acuerdo con las marcas también.
Por favor ayuda. Fragmentos de código apreciados.
1 Respuestas
1
Puede comenzar creando una lista de pares clave-valor, ordenarla e imprimir las 3 calificaciones principales.
go(G1,G2,G3) :- findall(Grade-Name, listofPeople(Grade,Name), List),
keysort(List, [G1-_,G2-_,G3-_|SortedList]).
El predicado falla si tiene menos de tres calificaciones.
Si además de calificaciones quieres tener nombres:
go(N1-G1,N2-G2,N3-G3) :- findall(Grade-Name, listofPeople(Grade,Name), List),
keysort(List, [G1-N1,G2-N2,G3-N3|SortedList]).
contestado el 03 de mayo de 12 a las 18:05
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas sorting prolog structure or haz tu propia pregunta.