2016-12-12 5 views
1

私はこれをどうやってできるかを探そうとしていましたが、事実を並べ替えようとしています: package(X、Y、N)、Nは数字です。私はXの値を持つリストを、N(最も低いものから最も高いもの)の値で順序付けしたいと思っています。 使用してみました:Prolog、ファクトをパラメータ別にソート

gera_caminho_tempo(、L) - のfindAll(パッケージ(N、、S)、パッケージ(、S)、パッケージ)、msort(パッケージ、L)を。

しかし、結果はありません、任意のアイデア?

答えて

3

このようなタスクの場合は、標準述語keysort/2をチェックしてください。あなたのケースでは

は、あなたが例えば使用ペアフォームの、作成することができます:あなたはPairs0を取得したら

 
?- findall(N-package(X,Y,N), package(X,Y,N), Pairs0). 

を、あなたは キーでソートペアを取得するためにkeysort/2を使用することができます各ペアの最初のコンポーネントは、 のキーとして機能します。

 
?- findall(N-package(X,Y,N), package(X,Y,N), Pairs0), 
    keysort(Pairs0, Pairs). 

私はそのようなソートされたペアをにのみ関連付けることを忘れないでください。ソートされたパッケージは簡単に行えます。

関連する問題