モジュールの配列が与えられた場合、モジュール間の正規化された (最小限の) 順序関係を記述する配列を返す最良の方法は何ですか? 配列の各要素は、親子関係を持つモジュールのペアの配列でなければなりません。各ペア内の親子の順序は重要ですが、ペア間の順序は重要ではありません。正規化された順序付けとは、推移性から派生できるものはすべて配列から除外する必要があることを意味します。
たとえば、 が与えられた[Object, Comparable, Float, Fixnum, Integer]
場合、答えは次のようになります。
[
[Float, Object],
[Float, Comparable],
[Fixnum, Integer],
[Integer, Object],
[Integer, Comparable],
]
配列内の 5 つのペアは、次のハッセ図の 5 つのエッジに対応します。
ヒント:順序関係がある場合は 、順序関係がない場合はをModule#<=>other
返します。-1
0
1
nil