2012-05-03 14 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点を印刷したいと思います。

これを行うには、私はソートを行う必要があります。ソートすると、生徒の名前の順序が失われます。

あなたは、デフォルトでは理解できるとして、私がしたいことは、私が

を印刷するときに、私は上記の出力に

コードを取得し、唯一のマークを並べ替えると同様、マークに応じた名前の位置を変更することですスニペットが高く評価されました。

+0

listOfPeople(19、 'Jos')のようなファクトのコレクションがあり、名前の上に3つのマークがあるものを印刷したいとしますか? –

+0

そうです、私はマークの名前のコレクションを持っています。 – HungryCoder

答えて

1

私は以下のスレッドであなたに答えました:X = 'Abdul'-92, Y = 'Izz'-33, Z ='Jos'-19にご入力go(X,Y,Z)結果に

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

+0

Brilliantこれはまさに私が探していたものです。申し訳ありませんが、誰も私の質問に答えていませんでしたので、もう少し詳しく尋ねました。別の問題をもう一度見てみてください。 http:// stackoverflow .com/questions/10437395/prolog-how-to-assert-make-a-database-only-once – HungryCoder

0

マークでリストをソートし、トップ3を取ってから、それを名前でソートできませんでしたか?

+0

それはまさに私がやりたいことです。リストをマークで並べ替えます。それ、どうやったら出来るの。 私の問題は、2つのデータ型、int-Stringがあることです。 int部分のみをどのようにソートするのですか? – HungryCoder

+0

整数リストの場合はどうしますか? –

+0

ソート(入力、出力)。 ここでは、マークをそれぞれの名前にリンクする必要があるため、できません。 : – HungryCoder

関連する問題