prólogo ordenar e imprimir mejor 3

lo que tengo ahora es,

   :-dynamic listofPeople/2.
    listofPeople(Mark,Name).

p.ej

     19, 'Jos'
     92, 'Abdul'
     33, 'Izz'
     16, 'Xin'

Lo quiero así -

92, 'Abdul'
33, 'Izz'
19, 'Jos'

que básicamente contiene la nota de cada alumno.

Quiero imprimir las mejores 3 marcas.

Para hacer eso, blv 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 cambiar la posición de los nombres de acuerdo con las marcas también, así que cuando imprimo

obtengo el resultado anterior

Fragmentos de código apreciados.

preguntado el 03 de mayo de 12 a las 17:05

Para que quede claro: tiene una colección de datos, como listOfPeople(19,'Jos'), y desea imprimirlos con las 3 primeras marcas, ordenados por nombre. -

así es, tengo una colección de nombres con marcas. -

2 Respuestas

Te he respondido en un hilo a continuación:

go(N1-G1,N2-G2,N3-G3) :- findall(Grade-Name, listofPeople(Grade,Name), List), 
                         keysort(List, [G1-N1,G2-N2,G3-N3|SortedList]).

en su entrada go(X,Y,Z) resultados en X = 'Abdul'-92, Y = 'Izz'-33, Z ='Jos'-19.

contestado el 03 de mayo de 12 a las 19:05

Brillante. Esto es exactamente lo que estaba buscando. Lo siento, nadie respondió a mi pregunta, así que volví a preguntar con más detalle. ¿Podría echar un vistazo a mi otro problema, por favor? stackoverflow.com/questions/10437395/… - codificador hambriento

¿No podría ordenar la lista por marca, tomar los 3 primeros y luego ordenar ESO por nombre, antes de imprimir?

contestado el 03 de mayo de 12 a las 17:05

Eso es exactamente lo que quiero hacer. Ordenar la lista por marca. Cómo puedo hacer eso. Mi problema es que hay 2 tipos de datos, int-String. ¿Cómo clasifico solo la parte int? - codificador hambriento

¿Cómo lo harías si fuera una lista de números enteros? - scott cazador

ordenar (Entrada, Salida). pero aquí necesito vincular las marcas con los nombres respectivos, por lo tanto, no puedo hacerlo. :( - codificador hambriento

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.