2012-05-03 2 views
1

то, что у меня сейчас есть,пролог сортировки и печати лучше всего 3

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

например

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

Я хочу, чтобы это так -

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

который basiclly содержит метку для каждого студента.

Я хочу напечатать лучшие 3 марки.

Для этого я должен выполнить сортировку. Если я буду сортировать, я потеряю порядок имени ученика.

Как вы можете понять, по умолчанию, что я хочу, чтобы сортировать только знаки и изменить положение названия в соответствии с метками, а также, так что, когда я печатать

я получить вышеуказанный выход

Code фрагменты оценены.

+0

Только для того, чтобы быть ясным: у вас есть коллекция фактов, таких как listOfPeople (19, «Jos»), и вы хотите напечатать те, у которых есть 3 верхние метки, отсортированные по имени? –

+0

Это правильно, у меня есть коллекция имен с метками. – HungryCoder

ответ

1

Я ответил вам в потоке ниже:

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

На вашем входе go(X,Y,Z) результатов в X = 'Abdul'-92, Y = 'Izz'-33, Z ='Jos'-19.

+0

Brilliant Это именно то, что я искал. Извините, никто не отвечал на мой вопрос, поэтому я снова спросил более подробно. Не могли бы вы взглянуть на мою другую проблему? http: // stackoverflow .com/вопросы/10437395/пролог-хау к утверждают, макияж а-базы данных только один раз, – HungryCoder

0

Не могли бы вы отсортировать список по марке, взять верхнюю часть 3 и затем отсортировать ее по имени перед печатью?

+0

Это именно то, что я хочу сделать. Сортировка списка по метке. Как это сделать. Моя проблема в том, что существует 2 типа данных, int-String. Как я могу отсортировать только часть int? – HungryCoder

+0

Как бы вы это сделали, если бы это был список целых чисел? –

+0

сортировка (вход, выход). , но здесь мне нужно связать метки с соответствующими именами, следовательно, это невозможно. :( – HungryCoder

Смежные вопросы