1

編集:セット内のすべてのエントリを含むリストを除いて、これは問題をまったく解決しないことに気付きました(つまり、比較値を取得し(a,e)(b,d)リストに e が含まれていない場合はまったく役に立ちませんが、 f) が含まれています。ダープ。そうは言っても、Haskell の順序付けられた非数値セットの距離比較の問題は、依然として IMO 興味深いので...

関数を書く必要があります

pairs :: Ord a => [a] -> [(a,a)]

x i < x jおよび i < jのリストからすべてのペア (x i , x j ) を返します。

これは、リスト内包表記を使用すると非常に簡単です。今、私はそれをソートする必要があり、タプルの「順序」でソートする必要があります。つまり、結合された順序 - (a,z) は (b,c) のずっと後に来る必要があります。整数の場合、これは簡単です。x iを x jに追加し、それを比較に使用します。

しかし、これは終わっOrdたので、この関数は char のような厄介なものを取らなければGTなりLTませEQGT。Haskellに言わせる方法はありますか

Zは 25 より大きいA

またはそのようなもの?または、これをソートする方法に関する他のアイデアはありますか?

xs(実際のタスクには、別の list の接頭辞であるysすべてのリストについて、 のpairs xs接頭辞であるという述語を満たすことが含まれますpairs ys。私は、リストを作成した後にリストをソートすることがおそらく進むべき道であるという印象を受けています。EDIT2:解決しました疑問に思っている人のために、リストを逆方向に繰り返すことによって.)

4

1 に答える 1