N セットの整数 A1、A2、A3 ... An があります。リスト内の最大要素と最小要素の差が最小であるというプロパティを使用して、各セットから 1 つの要素を含むリストを返すアルゴリズムを見つけます
例:
IN: A1 = [0,4,9], A2 = [2,6,11], A3 = [3,8,13], A4 = [7,12]
OUT: [9,6,8,7]
私はこの演習についてのアイデアを持っています。まず、1 つのリストのすべての要素を並べ替える必要があるため (すべての要素をそのセットに割り当てる必要があります)、その入力で次のようになります。
[[0,1],[2,2],[3,3],[4,1],[6,2],[7,4],[8,3],[9,1],[11,2],[12,4],[13,3]]
後で、考えられるすべてのリストを作成し、最小要素と最大要素の差でこのリストを見つけ、次のように正しい結果を返します。[9,6,8,7]
私は ocaml の初心者なので、このようなコーディングについていくつか質問があります。
- N 個 (無限個) の引数を持つ関数を作成できますか?
- 仮定を実現するためにペアのリストのような新しいタイプを作成する必要がありますか?
下手な英語で申し訳ありませんが、私が表現したかったことを理解していただければ幸いです。